auto-coder 0.1.293__tar.gz → 0.1.295__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.293 → auto_coder-0.1.295}/PKG-INFO +1 -1
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/auto_coder.egg-info/PKG-INFO +1 -1
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/auto_coder_runner.py +17 -3
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/chat_auto_coder_lang.py +4 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/commands/auto_command.py +31 -5
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/commands/tools.py +22 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/auto_coder_lang.py +6 -2
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/mcp_server.py +18 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/cache/local_duckdb_storage_cache.py +70 -25
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/qa_conversation_strategy.py +2 -0
- auto_coder-0.1.295/src/autocoder/version.py +1 -0
- auto_coder-0.1.293/src/autocoder/version.py +0 -1
- {auto_coder-0.1.293 → auto_coder-0.1.295}/LICENSE +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/README.md +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/setup.cfg +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/setup.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/auto_coder.egg-info/SOURCES.txt +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/auto_coder.egg-info/dependency_links.txt +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/auto_coder.egg-info/entry_points.txt +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/auto_coder.egg-info/requires.txt +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/auto_coder.egg-info/top_level.txt +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/agent/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/agent/auto_demand_organizer.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/agent/auto_filegroup.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/agent/auto_guess_query.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/agent/auto_learn_from_commit.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/agent/auto_review_commit.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/agent/auto_tool.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/agent/coder.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/agent/designer.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/agent/planner.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/agent/project_reader.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/auto_coder.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/auto_coder_rag.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/auto_coder_rag_client_mcp.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/auto_coder_rag_mcp.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/auto_coder_server.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/benchmark.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/chat/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/chat_auto_coder.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/command_args.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/commands/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/commands/auto_web.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/JupyterClient.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/ShellClient.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/anything2images.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/anything2img.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/audio.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/auto_configure.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/buildin_tokenizer.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/chunk_validation.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/cleaner.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/code_auto_execute.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/code_auto_generate.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/code_auto_generate_diff.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/code_auto_merge.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/code_auto_merge_diff.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/code_auto_merge_strict_diff.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/code_modification_ranker.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/command_completer.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/command_generator.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/command_templates.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/computer_use.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/conf_import_export.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/conf_validator.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/const.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/context_pruner.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/conversation_pruner.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/files.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/git_utils.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/global_cancel.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/image_to_page.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/index_import_export.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/interpreter.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/llm_rerank.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/mcp_hub.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/mcp_servers/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/mcp_servers/mcp_server_gpt4o_mini_search.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/mcp_tools.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/memory_manager.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/model_speed_test.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/printer.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/recall_validation.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/result_manager.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/screenshots.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/search.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/search_replace.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/shells.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/stats_panel.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/sys_prompt.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/text.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/types.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/utils_code_auto_generate.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/data/byzerllm.md +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/data/tokenizer.json +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/db/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/db/store.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/dispacher/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/dispacher/actions/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/dispacher/actions/action.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/dispacher/actions/copilot.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/dispacher/actions/plugins/action_translate.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/index/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/index/entry.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/index/filter/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/index/filter/normal_filter.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/index/filter/quick_filter.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/index/for_command.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/index/index.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/index/symbols_utils.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/index/types.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/lang.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/models.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/plugins/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/plugins/dynamic_completion_example.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/plugins/git_helper_plugin.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/plugins/sample_plugin.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/plugins/token_helper_plugin.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/plugins/utils.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/privacy/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/privacy/model_filter.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/pyproject/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/api_server.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/cache/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/cache/base_cache.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/cache/cache_result_merge.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/cache/local_byzer_storage_cache.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/cache/rag_file_meta.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/cache/simple_cache.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/conversation_to_queries.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/doc_filter.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/document_retriever.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/lang.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/llm_wrapper.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/loaders/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/loaders/docx_loader.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/loaders/excel_loader.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/long_context_rag.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/rag_config.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/rag_entry.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/raw_rag.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/relevant_utils.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/searchable.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/simple_directory_reader.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/simple_rag.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/stream_event/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/stream_event/event_writer.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/stream_event/types.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/token_checker.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/token_counter.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/token_limiter.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/token_limiter_utils.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/types.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/utils.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/variable_holder.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/regexproject/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/suffixproject/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/tsproject/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/_markitdown.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/auto_project_type.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/conversation_store.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/llm_client_interceptors.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/llms.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/log_capture.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/model_provider_selector.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/multi_turn.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/operate_config_api.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/print_table.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/project_structure.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/queue_communicate.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/request_event_queue.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/request_queue.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/rest.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/stream_thinking.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/tests.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/thread_utils.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/types.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/tests/test_action_regex_project.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/tests/test_chat_auto_coder.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/tests/test_code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/tests/test_command_completer.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/tests/test_planner.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/tests/test_plugins.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/tests/test_privacy.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/tests/test_queue_communicate.py +0 -0
- {auto_coder-0.1.293 → auto_coder-0.1.295}/tests/test_symbols_utils.py +0 -0
|
@@ -39,7 +39,7 @@ import git
|
|
|
39
39
|
from autocoder.common import git_utils
|
|
40
40
|
from autocoder.chat_auto_coder_lang import get_message
|
|
41
41
|
from autocoder.agent.auto_guess_query import AutoGuessQuery
|
|
42
|
-
from autocoder.common.mcp_server import get_mcp_server, McpRequest, McpInstallRequest, McpRemoveRequest, McpListRequest, McpListRunningRequest, McpRefreshRequest
|
|
42
|
+
from autocoder.common.mcp_server import get_mcp_server, McpRequest, McpInstallRequest, McpRemoveRequest, McpListRequest, McpListRunningRequest, McpRefreshRequest,McpServerInfoRequest
|
|
43
43
|
import byzerllm
|
|
44
44
|
from byzerllm.utils import format_str_jinja2
|
|
45
45
|
from autocoder.common.memory_manager import get_global_memory_file_paths
|
|
@@ -1133,7 +1133,7 @@ def mcp(query: str):
|
|
|
1133
1133
|
printer.print_in_terminal("mcp_list_builtin_title")
|
|
1134
1134
|
printer.print_str_in_terminal(response.result)
|
|
1135
1135
|
return
|
|
1136
|
-
|
|
1136
|
+
|
|
1137
1137
|
# Handle refresh command
|
|
1138
1138
|
if query.startswith("/refresh"):
|
|
1139
1139
|
server_name = query.replace("/refresh", "", 1).strip()
|
|
@@ -1183,7 +1183,21 @@ def mcp(query: str):
|
|
|
1183
1183
|
if os.path.exists(temp_yaml):
|
|
1184
1184
|
os.remove(temp_yaml)
|
|
1185
1185
|
|
|
1186
|
-
mcp_server = get_mcp_server()
|
|
1186
|
+
mcp_server = get_mcp_server()
|
|
1187
|
+
|
|
1188
|
+
|
|
1189
|
+
if query.startswith("/info"):
|
|
1190
|
+
response = mcp_server.send_request(McpServerInfoRequest(
|
|
1191
|
+
model=args.inference_model or args.model,
|
|
1192
|
+
product_mode=args.product_mode
|
|
1193
|
+
))
|
|
1194
|
+
if response.error:
|
|
1195
|
+
printer.print_in_terminal("mcp_server_info_error", style="red", error=response.error)
|
|
1196
|
+
else:
|
|
1197
|
+
printer.print_in_terminal("mcp_server_info_title")
|
|
1198
|
+
printer.print_str_in_terminal(response.result)
|
|
1199
|
+
return
|
|
1200
|
+
|
|
1187
1201
|
response = mcp_server.send_request(
|
|
1188
1202
|
McpRequest(
|
|
1189
1203
|
query=query,
|
|
@@ -138,6 +138,8 @@ MESSAGES = {
|
|
|
138
138
|
"official_doc": "Official Documentation: https://uelng8wukz.feishu.cn/wiki/NhPNwSRcWimKFIkQINIckloBncI",
|
|
139
139
|
"plugins_desc": "Manage plugins",
|
|
140
140
|
"plugins_usage": "Usage: /plugins <command>\nAvailable subcommands:\n /plugins /list - List all available plugins\n /plugins /load <name> - Load a plugin\n /plugins /unload <name> - Unload a plugin\n /plugins/dirs - List plugin directories\n /plugins/dirs /add <path> - Add a plugin directory\n /plugins/dirs /remove <path> - Remove a plugin directory\n /plugins/dirs /clear - Clear all plugin directories",
|
|
141
|
+
"mcp_server_info_error": "Error getting MCP server info: {{ error }}",
|
|
142
|
+
"mcp_server_info_title": "Connected MCP Server Info",
|
|
141
143
|
},
|
|
142
144
|
"zh": {
|
|
143
145
|
"auto_command_analyzing": "正在分析命令请求",
|
|
@@ -275,6 +277,8 @@ MESSAGES = {
|
|
|
275
277
|
"official_doc": "官方文档: https://uelng8wukz.feishu.cn/wiki/NhPNwSRcWimKFIkQINIckloBncI",
|
|
276
278
|
"plugins_desc": "管理插件",
|
|
277
279
|
"plugins_usage": "用法: /plugins <命令>\n可用的子命令:\n /plugins /list - 列出所有可用插件\n /plugins /load <名称> - 加载一个插件\n /plugins /unload <名称> - 卸载一个插件\n /plugins/dirs - 列出插件目录\n /plugins/dirs /add <路径> - 添加一个插件目录\n /plugins/dirs /remove <路径> - 移除一个插件目录\n /plugins/dirs /clear - 清除所有插件目录",
|
|
280
|
+
"mcp_server_info_error": "获取MCP服务器信息时出错: {{ error }}",
|
|
281
|
+
"mcp_server_info_title": "已连接的MCP服务器信息",
|
|
278
282
|
},
|
|
279
283
|
}
|
|
280
284
|
|
|
@@ -24,6 +24,7 @@ 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
26
|
from rich.text import Text
|
|
27
|
+
from autocoder.common.mcp_server import get_mcp_server,McpServerInfoRequest
|
|
27
28
|
|
|
28
29
|
class CommandMessage(BaseModel):
|
|
29
30
|
role: str
|
|
@@ -159,7 +160,17 @@ class CommandAutoTuner:
|
|
|
159
160
|
self.memory_config = memory_config
|
|
160
161
|
self.command_config = command_config
|
|
161
162
|
self.tools = AutoCommandTools(args=args, llm=self.llm)
|
|
162
|
-
self.project_type_analyzer = ProjectTypeAnalyzer(args=args, llm=self.llm)
|
|
163
|
+
self.project_type_analyzer = ProjectTypeAnalyzer(args=args, llm=self.llm)
|
|
164
|
+
try:
|
|
165
|
+
self.mcp_server = get_mcp_server()
|
|
166
|
+
mcp_server_info_response = self.mcp_server.send_request(McpServerInfoRequest(
|
|
167
|
+
model=args.inference_model or args.model,
|
|
168
|
+
product_mode=args.product_mode
|
|
169
|
+
))
|
|
170
|
+
self.mcp_server_info = mcp_server_info_response.result
|
|
171
|
+
except Exception as e:
|
|
172
|
+
logger.error(f"Error getting MCP server info: {str(e)}")
|
|
173
|
+
self.mcp_server_info = ""
|
|
163
174
|
|
|
164
175
|
def get_conversations(self) -> List[CommandMessage]:
|
|
165
176
|
"""Get conversation history from memory file"""
|
|
@@ -1210,12 +1221,26 @@ class CommandAutoTuner:
|
|
|
1210
1221
|
response_user(response="你好,我是 auto-coder")
|
|
1211
1222
|
</usage>
|
|
1212
1223
|
</command>
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1224
|
+
|
|
1225
|
+
<command>
|
|
1226
|
+
<name>execute_mcp_server</name>
|
|
1227
|
+
<description>执行MCP服务器</description>
|
|
1228
|
+
<usage>
|
|
1229
|
+
该函数接受一个参数 query, 为要执行的MCP服务器查询字符串。
|
|
1230
|
+
|
|
1231
|
+
你可以根据下面已经连接的 mcp server 信息,来决定个是否调用该函数,注意该函数会更具你的 query
|
|
1232
|
+
自动选择合适的 mcp server 来执行。如果你想某个特定的 server 来执行,你可以在 query 中说明你想哪个 server 执行。
|
|
1233
|
+
|
|
1234
|
+
<mcp_server_info>
|
|
1235
|
+
{{ mcp_server_info }}
|
|
1236
|
+
</mcp_server_info>
|
|
1237
|
+
|
|
1238
|
+
</usage>
|
|
1239
|
+
</command>
|
|
1216
1240
|
'''
|
|
1217
1241
|
return {
|
|
1218
|
-
"config_readme": config_readme.prompt()
|
|
1242
|
+
"config_readme": config_readme.prompt(),
|
|
1243
|
+
"mcp_server_info": self.mcp_server_info
|
|
1219
1244
|
}
|
|
1220
1245
|
|
|
1221
1246
|
def execute_auto_command(self, command: str, parameters: Dict[str, Any]) -> None:
|
|
@@ -1257,6 +1282,7 @@ class CommandAutoTuner:
|
|
|
1257
1282
|
"read_file_with_keyword_ranges": self.tools.read_file_with_keyword_ranges,
|
|
1258
1283
|
"get_project_type": self.project_type_analyzer.analyze,
|
|
1259
1284
|
"response_user": self.tools.response_user,
|
|
1285
|
+
"execute_mcp_server": self.tools.execute_mcp_server,
|
|
1260
1286
|
|
|
1261
1287
|
}
|
|
1262
1288
|
|
|
@@ -62,6 +62,28 @@ class AutoCommandTools:
|
|
|
62
62
|
self.result_manager = ResultManager()
|
|
63
63
|
self.printer = Printer()
|
|
64
64
|
|
|
65
|
+
def execute_mcp_server(self, query: str) -> str:
|
|
66
|
+
from autocoder.common.mcp_server import get_mcp_server, McpRequest, McpInstallRequest, McpRemoveRequest, McpListRequest, McpListRunningRequest, McpRefreshRequest
|
|
67
|
+
mcp_server = get_mcp_server()
|
|
68
|
+
response = mcp_server.send_request(
|
|
69
|
+
McpRequest(
|
|
70
|
+
query=query,
|
|
71
|
+
model=self.args.inference_model or self.args.model,
|
|
72
|
+
product_mode=self.args.product_mode
|
|
73
|
+
)
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
result = response.result
|
|
77
|
+
|
|
78
|
+
self.result_manager.append(content=result, meta = {
|
|
79
|
+
"action": "execute_mcp_server",
|
|
80
|
+
"input": {
|
|
81
|
+
"query": query
|
|
82
|
+
}
|
|
83
|
+
})
|
|
84
|
+
return result
|
|
85
|
+
|
|
86
|
+
|
|
65
87
|
def ask_user(self,question:str) -> str:
|
|
66
88
|
'''
|
|
67
89
|
如果你对用户的问题有什么疑问,或者你想从用户收集一些额外信息,可以调用此方法。
|
|
@@ -191,7 +191,9 @@ MESSAGES = {
|
|
|
191
191
|
"super_big_filter_failed": "❌ Super big filter failed: {{ error }}.",
|
|
192
192
|
"super_big_filter_stats": "{{ model_names }} Super big filter completed in {{ elapsed_time }} seconds, input tokens: {{ input_tokens }}, output tokens: {{ output_tokens }}, input cost: {{ input_cost }}, output cost: {{ output_cost }}, speed: {{ speed }} tokens/s, chunk_index: {{ chunk_index }}",
|
|
193
193
|
"super_big_filter_splitting": "⚠️ Index file is extremely large ({{ tokens_len }}/{{ max_tokens }}). The query will be split into {{ split_size }} chunks for processing.",
|
|
194
|
-
"super_big_filter_title": "{{ model_name }} is analyzing how to filter extremely large context..."
|
|
194
|
+
"super_big_filter_title": "{{ model_name }} is analyzing how to filter extremely large context...",
|
|
195
|
+
"mcp_server_info_error": "Error getting MCP server info: {{ error }}",
|
|
196
|
+
"mcp_server_info_title": "Connected MCP Server Info",
|
|
195
197
|
},
|
|
196
198
|
"zh": {
|
|
197
199
|
"file_sliding_window_processing": "文件 {{ file_path }} 过大 ({{ tokens }} tokens),正在使用滑动窗口处理...",
|
|
@@ -380,7 +382,9 @@ MESSAGES = {
|
|
|
380
382
|
"super_big_filter_failed": "❌ 超大过滤器失败: {{ error }}.",
|
|
381
383
|
"super_big_filter_stats": "{{ model_names }} 超大过滤器完成耗时 {{ elapsed_time }} 秒,输入token数: {{ input_tokens }}, 输出token数: {{ output_tokens }}, 输入成本: {{ input_cost }}, 输出成本: {{ output_cost }}, 速度: {{ speed }} tokens/秒, 块索引: {{ chunk_index }}",
|
|
382
384
|
"super_big_filter_splitting": "⚠️ 索引文件极其庞大 ({{ tokens_len }}/{{ max_tokens }})。查询将被分成 {{ split_size }} 个部分进行处理。",
|
|
383
|
-
"super_big_filter_title": "{{ model_name }} 正在分析如何过滤极大规模上下文..."
|
|
385
|
+
"super_big_filter_title": "{{ model_name }} 正在分析如何过滤极大规模上下文...",
|
|
386
|
+
"mcp_server_info_error": "获取MCP服务器信息时出错: {{ error }}",
|
|
387
|
+
"mcp_server_info_title": "已连接的MCP服务器信息",
|
|
384
388
|
}}
|
|
385
389
|
|
|
386
390
|
|
|
@@ -53,6 +53,12 @@ class McpRefreshRequest:
|
|
|
53
53
|
"""Request to refresh MCP server connections"""
|
|
54
54
|
name: Optional[str] = None
|
|
55
55
|
|
|
56
|
+
@dataclass
|
|
57
|
+
class McpServerInfoRequest:
|
|
58
|
+
"""Request to get MCP server info"""
|
|
59
|
+
model: Optional[str] = None
|
|
60
|
+
product_mode: Optional[str] = None
|
|
61
|
+
|
|
56
62
|
|
|
57
63
|
@dataclass
|
|
58
64
|
class McpExternalServer(BaseModel):
|
|
@@ -346,6 +352,18 @@ class McpServer:
|
|
|
346
352
|
await self._response_queue.put(McpResponse(
|
|
347
353
|
result="", error=get_message_with_format("mcp_list_builtin_error", error=str(e))))
|
|
348
354
|
|
|
355
|
+
elif isinstance(request, McpServerInfoRequest):
|
|
356
|
+
try:
|
|
357
|
+
llm = get_single_llm(request.model, product_mode=request.product_mode)
|
|
358
|
+
mcp_executor = McpExecutor(hub, llm)
|
|
359
|
+
result = mcp_executor.get_connected_servers_info()
|
|
360
|
+
await self._response_queue.put(McpResponse(result=result))
|
|
361
|
+
except Exception as e:
|
|
362
|
+
import traceback
|
|
363
|
+
traceback.print_exc()
|
|
364
|
+
await self._response_queue.put(McpResponse(
|
|
365
|
+
result="", error=get_message_with_format("mcp_server_info_error", error=str(e))))
|
|
366
|
+
|
|
349
367
|
elif isinstance(request, McpListRunningRequest):
|
|
350
368
|
try:
|
|
351
369
|
running_servers = "\n".join(
|
{auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/cache/local_duckdb_storage_cache.py
RENAMED
|
@@ -79,7 +79,8 @@ class DuckDBLocalContext:
|
|
|
79
79
|
class LocalDuckdbStorage:
|
|
80
80
|
|
|
81
81
|
def __init__(
|
|
82
|
-
self, llm: Union[ByzerLLM, SimpleByzerLLM] = None, database_name: str = ":memory:",
|
|
82
|
+
self, llm: Union[ByzerLLM, SimpleByzerLLM] = None, database_name: str = ":memory:",
|
|
83
|
+
table_name: str = "documents",
|
|
83
84
|
embed_dim: Optional[int] = None, persist_dir: str = "./storage"
|
|
84
85
|
) -> None:
|
|
85
86
|
self.llm = llm
|
|
@@ -410,9 +411,9 @@ class LocalDuckDBStorageCache(BaseCacheManager):
|
|
|
410
411
|
from autocoder.rag.token_counter import initialize_tokenizer
|
|
411
412
|
|
|
412
413
|
with Pool(
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
414
|
+
processes=os.cpu_count(),
|
|
415
|
+
initializer=initialize_tokenizer,
|
|
416
|
+
initargs=(VariableHolder.TOKENIZER_PATH,),
|
|
416
417
|
) as pool:
|
|
417
418
|
target_files_to_process = []
|
|
418
419
|
for file_info in files_to_process:
|
|
@@ -451,23 +452,66 @@ class LocalDuckDBStorageCache(BaseCacheManager):
|
|
|
451
452
|
self.write_cache()
|
|
452
453
|
|
|
453
454
|
if items:
|
|
454
|
-
logger.info("
|
|
455
|
+
logger.info("[BUILD CACHE] Clearing existing cache from Byzer DuckDB Storage")
|
|
455
456
|
self.storage.truncate_table()
|
|
456
|
-
logger.info("
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
457
|
+
logger.info(f"[BUILD CACHE] Preparing to write to Byzer DuckDB Storage, "
|
|
458
|
+
f"total chunks: {len(items)}, total files: {len(files_to_process)}")
|
|
459
|
+
|
|
460
|
+
# Use a fixed optimal batch size instead of dividing by worker count
|
|
461
|
+
batch_size = 100 # Optimal batch size for Byzer Storage
|
|
462
|
+
item_batches = [items[i:i + batch_size] for i in range(0, len(items), batch_size)]
|
|
463
|
+
|
|
464
|
+
total_batches = len(item_batches)
|
|
465
|
+
completed_batches = 0
|
|
466
|
+
|
|
467
|
+
logger.info(f"[BUILD CACHE] Starting to write to Byzer Storage using {batch_size} items per batch, "
|
|
468
|
+
f"total batches: {total_batches}")
|
|
469
|
+
start_time = time.time()
|
|
470
|
+
|
|
471
|
+
# Use more workers to process the smaller batches efficiently
|
|
472
|
+
max_workers = min(10, total_batches) # Cap at 10 workers or total batch count
|
|
473
|
+
logger.info(f"[BUILD CACHE] Using {max_workers} parallel workers for processing")
|
|
474
|
+
|
|
475
|
+
def batch_add_doc(_batch):
|
|
476
|
+
for b in _batch:
|
|
477
|
+
self.storage.add_doc(b, dim=self.extra_params.rag_duckdb_vector_dim)
|
|
478
|
+
|
|
479
|
+
with (ThreadPoolExecutor(max_workers=max_workers) as executor):
|
|
480
|
+
futures = []
|
|
481
|
+
# Submit all batches to the executor upfront (non-blocking)
|
|
482
|
+
for batch in item_batches:
|
|
483
|
+
futures.append(
|
|
484
|
+
executor.submit(
|
|
485
|
+
batch_add_doc, batch
|
|
486
|
+
)
|
|
487
|
+
)
|
|
462
488
|
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
489
|
+
# Wait for futures to complete
|
|
490
|
+
for future in as_completed(futures):
|
|
491
|
+
try:
|
|
492
|
+
future.result()
|
|
493
|
+
completed_batches += 1
|
|
494
|
+
elapsed = time.time() - start_time
|
|
495
|
+
estimated_total = elapsed / completed_batches * total_batches if completed_batches > 0 else 0
|
|
496
|
+
remaining = estimated_total - elapsed
|
|
497
|
+
|
|
498
|
+
# Only log progress at reasonable intervals to reduce log spam
|
|
499
|
+
if ((completed_batches == 1) or
|
|
500
|
+
(completed_batches == total_batches) or
|
|
501
|
+
(completed_batches % max(1, total_batches // 10) == 0)):
|
|
502
|
+
logger.info(
|
|
503
|
+
f"[BUILD CACHE] Progress: {completed_batches}/{total_batches} batches completed "
|
|
504
|
+
f"({(completed_batches / total_batches * 100):.1f}%) "
|
|
505
|
+
f"Estimated time remaining: {remaining:.1f}s"
|
|
506
|
+
)
|
|
507
|
+
except Exception as e:
|
|
508
|
+
logger.error(f"[BUILD CACHE] Error saving batch: {str(e)}")
|
|
509
|
+
# Add more detailed error information
|
|
510
|
+
logger.error(f"[BUILD CACHE] Error details: batch size: "
|
|
511
|
+
f"{len(batch) if 'batch' in locals() else 'unknown'}")
|
|
512
|
+
|
|
513
|
+
total_time = time.time() - start_time
|
|
514
|
+
logger.info(f"[BUILD CACHE] All chunks written, total time: {total_time:.2f}s")
|
|
471
515
|
|
|
472
516
|
def update_storage(self, file_info: FileInfo, is_delete: bool):
|
|
473
517
|
results = self.storage.query_by_path(file_info.file_path)
|
|
@@ -596,10 +640,11 @@ class LocalDuckDBStorageCache(BaseCacheManager):
|
|
|
596
640
|
"""Search cached documents using query"""
|
|
597
641
|
self.trigger_update() # 检查更新
|
|
598
642
|
|
|
599
|
-
if options is None or "
|
|
643
|
+
if options is None or "queries" not in options:
|
|
600
644
|
return {file_path: self.cache[file_path].model_dump() for file_path in self.cache}
|
|
601
645
|
|
|
602
|
-
|
|
646
|
+
queries = options.get("queries", "")
|
|
647
|
+
query = queries[0]
|
|
603
648
|
logger.info(f"正在使用向量搜索检索数据, 你的问题: {query}")
|
|
604
649
|
total_tokens = 0
|
|
605
650
|
results = []
|
|
@@ -610,9 +655,9 @@ class LocalDuckDBStorageCache(BaseCacheManager):
|
|
|
610
655
|
# results = self.storage.vector_search(query, similarity_value=0.7, similarity_top_k=200)
|
|
611
656
|
search_results = self.storage.vector_search(
|
|
612
657
|
query,
|
|
613
|
-
similarity_value=self.extra_params.
|
|
614
|
-
similarity_top_k=self.extra_params.
|
|
615
|
-
query_dim=self.extra_params.
|
|
658
|
+
similarity_value=self.extra_params.rag_duckdb_query_similarity,
|
|
659
|
+
similarity_top_k=self.extra_params.rag_duckdb_query_top_k,
|
|
660
|
+
query_dim=self.extra_params.rag_duckdb_vector_dim
|
|
616
661
|
)
|
|
617
662
|
results.extend(search_results)
|
|
618
663
|
|
|
@@ -644,4 +689,4 @@ class LocalDuckDBStorageCache(BaseCacheManager):
|
|
|
644
689
|
f"用户Hybrid Index Max Tokens设置为:{self.max_output_tokens},"
|
|
645
690
|
f"累计tokens: {total_tokens}, "
|
|
646
691
|
f"经过向量搜索共检索出 {len(result.keys())} 个文档, 共 {len(self.cache.keys())} 个文档")
|
|
647
|
-
return result
|
|
692
|
+
return result
|
|
@@ -63,6 +63,7 @@ class MultiRoundStrategy(QAConversationStrategy):
|
|
|
63
63
|
{% if local_image_host %}
|
|
64
64
|
4. 图片路径处理
|
|
65
65
|
- 图片地址需返回绝对路径,
|
|
66
|
+
- 对于Windows风格的路径,需要转换为Linux风格, 例如:C:\Users\user\Desktop\image.png 转换为 C:/Users/user/Desktop/image.png
|
|
66
67
|
- 为请求图片资源 需增加 http://{{ local_image_host }}/static/ 作为前缀
|
|
67
68
|
例如:/path/to/images/image.png, 返回 http://{{ local_image_host }}/static/path/to/images/image.png
|
|
68
69
|
{% endif %}
|
|
@@ -114,6 +115,7 @@ class SingleRoundStrategy(QAConversationStrategy):
|
|
|
114
115
|
{% if local_image_host %}
|
|
115
116
|
4. 图片路径处理
|
|
116
117
|
- 图片地址需返回绝对路径,
|
|
118
|
+
- 对于Windows风格的路径,需要转换为Linux风格, 例如:C:\Users\user\Desktop\image.png 转换为 C:/Users/user/Desktop/image.png
|
|
117
119
|
- 为请求图片资源 需增加 http://{{ local_image_host }}/static/ 作为前缀
|
|
118
120
|
例如:/path/to/images/image.png, 返回 http://{{ local_image_host }}/static/path/to/images/image.png
|
|
119
121
|
{% endif %}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.295"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.1.293"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/code_auto_generate_editblock.py
RENAMED
|
File without changes
|
{auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/code_auto_generate_strict_diff.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/code_auto_merge_strict_diff.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/dispacher/actions/plugins/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/plugins/dynamic_completion_example.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/rag/cache/local_byzer_storage_cache.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py
RENAMED
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.293 → auto_coder-0.1.295}/src/autocoder/utils/chat_auto_coder_utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|