auto-coder 0.1.291__tar.gz → 0.1.293__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.291 → auto_coder-0.1.293}/PKG-INFO +2 -1
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/auto_coder.egg-info/PKG-INFO +2 -1
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/auto_coder.egg-info/SOURCES.txt +2 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/auto_coder.egg-info/requires.txt +1 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/auto_coder_rag.py +16 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/auto_coder_server.py +8 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/__init__.py +8 -4
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/mcp_hub.py +59 -18
- auto_coder-0.1.293/src/autocoder/common/mcp_servers/mcp_server_gpt4o_mini_search.py +153 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/api_server.py +8 -0
- auto_coder-0.1.293/src/autocoder/rag/cache/local_duckdb_storage_cache.py +647 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/document_retriever.py +12 -5
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/long_context_rag.py +16 -16
- auto_coder-0.1.293/src/autocoder/version.py +1 -0
- auto_coder-0.1.291/src/autocoder/version.py +0 -1
- {auto_coder-0.1.291 → auto_coder-0.1.293}/LICENSE +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/README.md +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/setup.cfg +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/setup.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/auto_coder.egg-info/dependency_links.txt +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/auto_coder.egg-info/entry_points.txt +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/auto_coder.egg-info/top_level.txt +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/auto_demand_organizer.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/auto_filegroup.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/auto_guess_query.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/auto_learn_from_commit.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/auto_review_commit.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/auto_tool.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/coder.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/designer.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/planner.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/project_reader.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/auto_coder.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/auto_coder_rag_client_mcp.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/auto_coder_rag_mcp.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/auto_coder_runner.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/benchmark.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/chat/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/chat_auto_coder.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/chat_auto_coder_lang.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/command_args.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/commands/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/commands/auto_command.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/commands/auto_web.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/commands/tools.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/JupyterClient.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/ShellClient.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/anything2images.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/anything2img.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/audio.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/auto_coder_lang.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/auto_configure.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/buildin_tokenizer.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/chunk_validation.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/cleaner.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/code_auto_execute.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/code_auto_generate.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/code_auto_generate_diff.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/code_auto_merge.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/code_auto_merge_diff.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/code_auto_merge_strict_diff.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/code_modification_ranker.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/command_completer.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/command_generator.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/command_templates.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/computer_use.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/conf_import_export.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/conf_validator.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/const.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/context_pruner.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/conversation_pruner.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/files.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/git_utils.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/global_cancel.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/image_to_page.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/index_import_export.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/interpreter.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/llm_rerank.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/mcp_server.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/mcp_servers/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/mcp_tools.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/memory_manager.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/model_speed_test.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/printer.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/recall_validation.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/result_manager.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/screenshots.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/search.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/search_replace.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/shells.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/stats_panel.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/sys_prompt.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/text.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/types.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/utils_code_auto_generate.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/data/byzerllm.md +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/data/tokenizer.json +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/db/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/db/store.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/dispacher/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/dispacher/actions/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/dispacher/actions/action.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/dispacher/actions/copilot.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/dispacher/actions/plugins/action_translate.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/index/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/index/entry.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/index/filter/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/index/filter/normal_filter.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/index/filter/quick_filter.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/index/for_command.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/index/index.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/index/symbols_utils.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/index/types.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/lang.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/models.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/plugins/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/plugins/dynamic_completion_example.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/plugins/git_helper_plugin.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/plugins/sample_plugin.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/plugins/token_helper_plugin.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/plugins/utils.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/privacy/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/privacy/model_filter.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/pyproject/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/cache/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/cache/base_cache.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/cache/cache_result_merge.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/cache/local_byzer_storage_cache.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/cache/rag_file_meta.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/cache/simple_cache.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/conversation_to_queries.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/doc_filter.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/lang.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/llm_wrapper.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/loaders/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/loaders/docx_loader.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/loaders/excel_loader.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/qa_conversation_strategy.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/rag_config.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/rag_entry.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/raw_rag.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/relevant_utils.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/searchable.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/simple_directory_reader.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/simple_rag.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/stream_event/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/stream_event/event_writer.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/stream_event/types.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/token_checker.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/token_counter.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/token_limiter.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/token_limiter_utils.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/types.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/utils.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/variable_holder.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/regexproject/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/suffixproject/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/tsproject/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/_markitdown.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/auto_project_type.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/conversation_store.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/llm_client_interceptors.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/llms.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/log_capture.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/model_provider_selector.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/multi_turn.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/operate_config_api.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/print_table.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/project_structure.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/queue_communicate.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/request_event_queue.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/request_queue.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/rest.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/stream_thinking.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/tests.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/thread_utils.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/types.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/tests/test_action_regex_project.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/tests/test_chat_auto_coder.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/tests/test_code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/tests/test_command_completer.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/tests/test_planner.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/tests/test_plugins.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/tests/test_privacy.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/tests/test_queue_communicate.py +0 -0
- {auto_coder-0.1.291 → auto_coder-0.1.293}/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.293
|
|
4
4
|
Summary: AutoCoder: AutoCoder
|
|
5
5
|
Author: allwefantasy
|
|
6
6
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
@@ -36,6 +36,7 @@ Requires-Dist: google-generativeai
|
|
|
36
36
|
Requires-Dist: protobuf
|
|
37
37
|
Requires-Dist: azure-cognitiveservices-speech
|
|
38
38
|
Requires-Dist: real_agent
|
|
39
|
+
Requires-Dist: duckdb
|
|
39
40
|
Requires-Dist: python-docx
|
|
40
41
|
Requires-Dist: docx2txt
|
|
41
42
|
Requires-Dist: pdf2image
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: auto-coder
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.293
|
|
4
4
|
Summary: AutoCoder: AutoCoder
|
|
5
5
|
Author: allwefantasy
|
|
6
6
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
@@ -36,6 +36,7 @@ Requires-Dist: google-generativeai
|
|
|
36
36
|
Requires-Dist: protobuf
|
|
37
37
|
Requires-Dist: azure-cognitiveservices-speech
|
|
38
38
|
Requires-Dist: real_agent
|
|
39
|
+
Requires-Dist: duckdb
|
|
39
40
|
Requires-Dist: python-docx
|
|
40
41
|
Requires-Dist: docx2txt
|
|
41
42
|
Requires-Dist: pdf2image
|
|
@@ -92,6 +92,7 @@ src/autocoder/common/text.py
|
|
|
92
92
|
src/autocoder/common/types.py
|
|
93
93
|
src/autocoder/common/utils_code_auto_generate.py
|
|
94
94
|
src/autocoder/common/mcp_servers/__init__.py
|
|
95
|
+
src/autocoder/common/mcp_servers/mcp_server_gpt4o_mini_search.py
|
|
95
96
|
src/autocoder/common/mcp_servers/mcp_server_perplexity.py
|
|
96
97
|
src/autocoder/data/byzerllm.md
|
|
97
98
|
src/autocoder/data/tokenizer.json
|
|
@@ -151,6 +152,7 @@ src/autocoder/rag/cache/byzer_storage_cache.py
|
|
|
151
152
|
src/autocoder/rag/cache/cache_result_merge.py
|
|
152
153
|
src/autocoder/rag/cache/file_monitor_cache.py
|
|
153
154
|
src/autocoder/rag/cache/local_byzer_storage_cache.py
|
|
155
|
+
src/autocoder/rag/cache/local_duckdb_storage_cache.py
|
|
154
156
|
src/autocoder/rag/cache/rag_file_meta.py
|
|
155
157
|
src/autocoder/rag/cache/simple_cache.py
|
|
156
158
|
src/autocoder/rag/loaders/__init__.py
|
|
@@ -179,6 +179,14 @@ def main(input_args: Optional[List[str]] = None):
|
|
|
179
179
|
build_index_parser = subparsers.add_parser(
|
|
180
180
|
"build_hybrid_index", help="Build hybrid index for RAG"
|
|
181
181
|
)
|
|
182
|
+
|
|
183
|
+
build_index_parser.add_argument(
|
|
184
|
+
"--rag_storage_type",
|
|
185
|
+
type=str,
|
|
186
|
+
default="duckdb",
|
|
187
|
+
help="The storage type of the RAG, duckdb or byzer-storage",
|
|
188
|
+
)
|
|
189
|
+
|
|
182
190
|
build_index_parser.add_argument(
|
|
183
191
|
"--quick", action="store_true", help="Skip system initialization"
|
|
184
192
|
)
|
|
@@ -329,6 +337,14 @@ def main(input_args: Optional[List[str]] = None):
|
|
|
329
337
|
action="store_true",
|
|
330
338
|
help="Enable hybrid index",
|
|
331
339
|
)
|
|
340
|
+
|
|
341
|
+
serve_parser.add_argument(
|
|
342
|
+
"--rag_storage_type",
|
|
343
|
+
type=str,
|
|
344
|
+
default="duckdb",
|
|
345
|
+
help="The storage type of the RAG, duckdb or byzer-storage",
|
|
346
|
+
)
|
|
347
|
+
|
|
332
348
|
serve_parser.add_argument(
|
|
333
349
|
"--hybrid_index_max_output_tokens",
|
|
334
350
|
type=int,
|
|
@@ -34,6 +34,14 @@ import sys
|
|
|
34
34
|
import io
|
|
35
35
|
from autocoder.utils.log_capture import LogCapture
|
|
36
36
|
|
|
37
|
+
# If support dotenv, use it
|
|
38
|
+
if os.path.exists(".env"):
|
|
39
|
+
try:
|
|
40
|
+
from dotenv import load_dotenv
|
|
41
|
+
load_dotenv()
|
|
42
|
+
except ImportError:
|
|
43
|
+
pass
|
|
44
|
+
|
|
37
45
|
def convert_yaml_config_to_str(yaml_config):
|
|
38
46
|
yaml_content = yaml.safe_dump(
|
|
39
47
|
yaml_config,
|
|
@@ -292,10 +292,14 @@ class AutoCoderArgs(pydantic.BaseModel):
|
|
|
292
292
|
|
|
293
293
|
rag_url: Optional[str] = ""
|
|
294
294
|
rag_token: Optional[str] = ""
|
|
295
|
-
rag_type: Optional[str] = "storage"
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
295
|
+
rag_type: Optional[str] = "storage"
|
|
296
|
+
rag_storage_type: Optional[str] = "duckdb" # 向量化存储类型 byzer-storage | duckdb
|
|
297
|
+
rag_params_max_tokens: Optional[int] = 500000
|
|
298
|
+
rag_doc_filter_relevance: Optional[int] = 2
|
|
299
|
+
rag_context_window_limit: Optional[int] = 120000
|
|
300
|
+
rag_duckdb_vector_dim: Optional[int] = 1024 # DuckDB 向量化存储的维度
|
|
301
|
+
rag_duckdb_query_similarity: Optional[float] = 0.1 # DuckDB 向量化检索 相似度 阈值
|
|
302
|
+
rag_duckdb_query_top_k: Optional[int] = 10000 # DuckDB 向量化检索 返回 TopK个结果(且大于相似度)
|
|
299
303
|
# rag 本地图床地址
|
|
300
304
|
local_image_host: Optional[str] = ""
|
|
301
305
|
rag_recall_max_queries: Optional[int] = 5
|
|
@@ -2,8 +2,12 @@ import os
|
|
|
2
2
|
import json
|
|
3
3
|
import asyncio
|
|
4
4
|
import aiohttp
|
|
5
|
+
import importlib
|
|
6
|
+
import pkgutil
|
|
7
|
+
import re
|
|
8
|
+
import inspect
|
|
5
9
|
from datetime import datetime, timedelta
|
|
6
|
-
from typing import Dict, List, Optional, Any, Set, Optional
|
|
10
|
+
from typing import Dict, List, Optional, Any, Set, Optional, Tuple
|
|
7
11
|
from pathlib import Path
|
|
8
12
|
from pydantic import BaseModel, Field
|
|
9
13
|
|
|
@@ -62,23 +66,53 @@ class McpConnection:
|
|
|
62
66
|
self.session = session
|
|
63
67
|
|
|
64
68
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
69
|
+
def _generate_server_configs() -> Tuple[Dict[str, Any], Dict[str, str]]:
|
|
70
|
+
"""
|
|
71
|
+
Scan the autocoder.common.mcp_servers directory for mcp_server_*.py files
|
|
72
|
+
and generate server configurations.
|
|
73
|
+
|
|
74
|
+
Returns:
|
|
75
|
+
Tuple of (built-in servers dict, JSON templates dict)
|
|
76
|
+
"""
|
|
77
|
+
servers = {}
|
|
78
|
+
templates = {}
|
|
79
|
+
|
|
80
|
+
try:
|
|
81
|
+
package_name = "autocoder.common.mcp_servers"
|
|
82
|
+
package = importlib.import_module(package_name)
|
|
83
|
+
|
|
84
|
+
# Find all modules in the package
|
|
85
|
+
for _, name, _ in pkgutil.iter_modules(package.__path__, package.__name__ + "."):
|
|
86
|
+
# Only process modules that start with "mcp_server_"
|
|
87
|
+
base_name = name.split(".")[-1]
|
|
88
|
+
if base_name.startswith("mcp_server_"):
|
|
89
|
+
# Generate a friendly server name
|
|
90
|
+
friendly_name = base_name[11:]
|
|
91
|
+
|
|
92
|
+
# Create env dictionary with placeholders
|
|
93
|
+
env_dict = {}
|
|
94
|
+
|
|
95
|
+
# Create server configuration
|
|
96
|
+
config = {
|
|
97
|
+
"command": "python",
|
|
98
|
+
"args": ["-m", name],
|
|
99
|
+
"env": env_dict
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
# Store in dictionaries
|
|
103
|
+
servers[friendly_name] = config
|
|
104
|
+
templates[friendly_name] = json.dumps({friendly_name: config}, indent=4)
|
|
105
|
+
|
|
106
|
+
logger.info(f"Detected MCP server: {friendly_name}")
|
|
107
|
+
|
|
108
|
+
except Exception as e:
|
|
109
|
+
logger.error(f"Error generating server configs: {e}")
|
|
110
|
+
|
|
111
|
+
return servers, templates
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
# Automatically generate server configurations
|
|
115
|
+
MCP_BUILD_IN_SERVERS, MCP_SERVER_TEMPLATES = _generate_server_configs()
|
|
82
116
|
|
|
83
117
|
|
|
84
118
|
class McpHub:
|
|
@@ -422,3 +456,10 @@ class McpHub:
|
|
|
422
456
|
"""
|
|
423
457
|
for name in list(self.connections.keys()):
|
|
424
458
|
await self.delete_connection(name)
|
|
459
|
+
|
|
460
|
+
@classmethod
|
|
461
|
+
def get_server_templates(cls) -> Dict[str, str]:
|
|
462
|
+
"""
|
|
463
|
+
Get all available server templates as JSON strings
|
|
464
|
+
"""
|
|
465
|
+
return MCP_SERVER_TEMPLATES
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
from os import getenv
|
|
2
|
+
from textwrap import dedent
|
|
3
|
+
import sys
|
|
4
|
+
|
|
5
|
+
import mcp.server.stdio
|
|
6
|
+
import mcp.types as types
|
|
7
|
+
from mcp.server import NotificationOptions, Server
|
|
8
|
+
from mcp.server.models import InitializationOptions
|
|
9
|
+
import json
|
|
10
|
+
from openai import OpenAI
|
|
11
|
+
|
|
12
|
+
OPENAI_API_KEY = getenv("OPENAI_API_KEY")
|
|
13
|
+
# Check if API key is empty or None
|
|
14
|
+
if not OPENAI_API_KEY:
|
|
15
|
+
print("Error: OPENAI_API_KEY environment variable is not set. Please set it before running this server.", file=sys.stderr)
|
|
16
|
+
sys.exit(1)
|
|
17
|
+
|
|
18
|
+
OPENAI_API_BASE_URL = getenv(
|
|
19
|
+
"OPENAI_API_BASE_URL", "https://api.openai.com/v1")
|
|
20
|
+
|
|
21
|
+
server = Server("mcp-server-gpt4o-mini-search")
|
|
22
|
+
|
|
23
|
+
client = OpenAI(
|
|
24
|
+
api_key=OPENAI_API_KEY,
|
|
25
|
+
base_url=OPENAI_API_BASE_URL
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@server.list_tools()
|
|
30
|
+
async def handle_list_tools() -> list[types.Tool]:
|
|
31
|
+
return [
|
|
32
|
+
types.Tool(
|
|
33
|
+
name="gpt4o_mini_search",
|
|
34
|
+
description=dedent(
|
|
35
|
+
"""
|
|
36
|
+
GPT-4o mini with search enables agents to gather information from the internet
|
|
37
|
+
in real-time, providing up-to-date answers with source citations.
|
|
38
|
+
This tool is ideal for fact-checking, research, and accessing current information
|
|
39
|
+
that might not be in the model's training data.
|
|
40
|
+
|
|
41
|
+
The search-enhanced responses include relevant web sources to support the information
|
|
42
|
+
provided, making it useful for obtaining verified and recent information.
|
|
43
|
+
|
|
44
|
+
[Response structure]
|
|
45
|
+
- id: A unique identifier for the response
|
|
46
|
+
- model: The model used (gpt-4o-mini-search-preview)
|
|
47
|
+
- object: The object type ("chat.completion")
|
|
48
|
+
- created: The Unix timestamp when the completion was created
|
|
49
|
+
- choices[]: The list of completion choices generated
|
|
50
|
+
- usage: Usage statistics for the completion request
|
|
51
|
+
"""
|
|
52
|
+
),
|
|
53
|
+
inputSchema={
|
|
54
|
+
"type": "object",
|
|
55
|
+
"properties": {
|
|
56
|
+
"system_message": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"description": "Optional custom system message. If not provided, a default search-optimized system message will be used.",
|
|
59
|
+
},
|
|
60
|
+
"messages": {
|
|
61
|
+
"type": "array",
|
|
62
|
+
"description": "A list of messages comprising the conversation so far (excluding system message which is handled separately).",
|
|
63
|
+
"items": {
|
|
64
|
+
"type": "object",
|
|
65
|
+
"properties": {
|
|
66
|
+
"content": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"description": "The contents of the message in this turn of conversation.",
|
|
69
|
+
},
|
|
70
|
+
"role": {
|
|
71
|
+
"type": "string",
|
|
72
|
+
"description": "The role of the speaker in this turn of conversation.",
|
|
73
|
+
"enum": ["user", "assistant"],
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
"required": ["content", "role"],
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
"required": ["messages"],
|
|
81
|
+
},
|
|
82
|
+
)
|
|
83
|
+
]
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
@server.call_tool()
|
|
87
|
+
async def handle_call_tool(
|
|
88
|
+
name: str, arguments: dict
|
|
89
|
+
) -> list[types.TextContent | types.ImageContent | types.EmbeddedResource]:
|
|
90
|
+
if name != "gpt4o_mini_search":
|
|
91
|
+
raise ValueError(f"Unknown tool: {name}")
|
|
92
|
+
|
|
93
|
+
# Extract user messages
|
|
94
|
+
user_messages = arguments.get("messages", [])
|
|
95
|
+
|
|
96
|
+
# Define default system message if not provided
|
|
97
|
+
default_system_message = (
|
|
98
|
+
"你是专业搜索助手,需要:\n"
|
|
99
|
+
"1. 提供基于用户查询的清晰格式化信息\n"
|
|
100
|
+
"2. 使用[标题](URL)格式嵌入链接\n"
|
|
101
|
+
"3. 每条信息后附上来源\n"
|
|
102
|
+
"4. 用'---'分隔不同结果\n"
|
|
103
|
+
"5. 直接在文本中引用,不使用编号引用\n"
|
|
104
|
+
"6. 确保提供完整URL"
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
# Use custom system message if provided, otherwise use default
|
|
108
|
+
system_message = arguments.get("system_message", default_system_message)
|
|
109
|
+
|
|
110
|
+
# Prepare full message list with system message first
|
|
111
|
+
full_messages = [{"role": "system", "content": system_message}]
|
|
112
|
+
full_messages.extend(user_messages)
|
|
113
|
+
|
|
114
|
+
try:
|
|
115
|
+
# Initialize OpenAI client
|
|
116
|
+
|
|
117
|
+
# Make the API call using OpenAI SDK
|
|
118
|
+
completion = client.chat.completions.create(
|
|
119
|
+
model="gpt-4o-mini-search-preview",
|
|
120
|
+
messages=full_messages
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
# Extract content from response
|
|
124
|
+
content = completion.choices[0].message.content
|
|
125
|
+
|
|
126
|
+
except Exception as e:
|
|
127
|
+
raise RuntimeError(f"API error: {str(e)}")
|
|
128
|
+
|
|
129
|
+
return [types.TextContent(
|
|
130
|
+
type="text",
|
|
131
|
+
text=content,
|
|
132
|
+
)]
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
async def main():
|
|
136
|
+
async with mcp.server.stdio.stdio_server() as (read_stream, write_stream):
|
|
137
|
+
await server.run(
|
|
138
|
+
read_stream,
|
|
139
|
+
write_stream,
|
|
140
|
+
InitializationOptions(
|
|
141
|
+
server_name="mcp-server-gpt4o-mini-search",
|
|
142
|
+
server_version="0.1.0",
|
|
143
|
+
capabilities=server.get_capabilities(
|
|
144
|
+
notification_options=NotificationOptions(
|
|
145
|
+
tools_changed=True),
|
|
146
|
+
experimental_capabilities={},
|
|
147
|
+
),
|
|
148
|
+
),
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
if __name__ == "__main__":
|
|
152
|
+
import asyncio
|
|
153
|
+
asyncio.run(main())
|
|
@@ -31,6 +31,14 @@ from byzerllm.utils.client.entrypoints.openai.protocol import (
|
|
|
31
31
|
from pydantic import BaseModel
|
|
32
32
|
from typing import List,Optional
|
|
33
33
|
|
|
34
|
+
# If support dotenv, use it
|
|
35
|
+
if os.path.exists(".env"):
|
|
36
|
+
try:
|
|
37
|
+
from dotenv import load_dotenv
|
|
38
|
+
load_dotenv()
|
|
39
|
+
except ImportError:
|
|
40
|
+
pass
|
|
41
|
+
|
|
34
42
|
logger = init_logger(__name__)
|
|
35
43
|
|
|
36
44
|
llm_client: ByzerLLM = None
|