auto-coder 0.1.292__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.292 → auto_coder-0.1.293}/PKG-INFO +1 -1
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/auto_coder.egg-info/PKG-INFO +1 -1
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/auto_coder.egg-info/SOURCES.txt +1 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/auto_coder_server.py +8 -0
- {auto_coder-0.1.292 → 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.292 → auto_coder-0.1.293}/src/autocoder/rag/api_server.py +8 -0
- {auto_coder-0.1.292 → 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.292/src/autocoder/version.py +0 -1
- {auto_coder-0.1.292 → auto_coder-0.1.293}/LICENSE +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/README.md +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/setup.cfg +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/setup.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/auto_coder.egg-info/dependency_links.txt +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/auto_coder.egg-info/entry_points.txt +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/auto_coder.egg-info/requires.txt +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/auto_coder.egg-info/top_level.txt +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/agent/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/agent/auto_demand_organizer.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/agent/auto_filegroup.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/agent/auto_guess_query.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/agent/auto_learn_from_commit.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/agent/auto_review_commit.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/agent/auto_tool.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/agent/coder.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/agent/designer.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/agent/planner.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/agent/project_reader.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/auto_coder.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/auto_coder_rag.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/auto_coder_rag_client_mcp.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/auto_coder_rag_mcp.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/auto_coder_runner.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/benchmark.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/chat/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/chat_auto_coder.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/chat_auto_coder_lang.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/command_args.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/commands/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/commands/auto_command.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/commands/auto_web.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/commands/tools.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/JupyterClient.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/ShellClient.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/anything2images.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/anything2img.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/audio.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/auto_coder_lang.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/auto_configure.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/buildin_tokenizer.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/chunk_validation.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/cleaner.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/code_auto_execute.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/code_auto_generate.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/code_auto_generate_diff.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/code_auto_merge.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/code_auto_merge_diff.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/code_auto_merge_strict_diff.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/code_modification_ranker.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/command_completer.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/command_generator.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/command_templates.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/computer_use.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/conf_import_export.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/conf_validator.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/const.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/context_pruner.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/conversation_pruner.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/files.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/git_utils.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/global_cancel.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/image_to_page.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/index_import_export.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/interpreter.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/llm_rerank.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/mcp_server.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/mcp_servers/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/mcp_tools.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/memory_manager.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/model_speed_test.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/printer.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/recall_validation.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/result_manager.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/screenshots.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/search.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/search_replace.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/shells.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/stats_panel.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/sys_prompt.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/text.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/types.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/utils_code_auto_generate.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/data/byzerllm.md +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/data/tokenizer.json +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/db/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/db/store.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/dispacher/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/dispacher/actions/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/dispacher/actions/action.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/dispacher/actions/copilot.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/dispacher/actions/plugins/action_translate.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/index/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/index/entry.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/index/filter/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/index/filter/normal_filter.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/index/filter/quick_filter.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/index/for_command.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/index/index.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/index/symbols_utils.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/index/types.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/lang.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/models.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/plugins/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/plugins/dynamic_completion_example.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/plugins/git_helper_plugin.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/plugins/sample_plugin.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/plugins/token_helper_plugin.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/plugins/utils.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/privacy/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/privacy/model_filter.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/pyproject/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/cache/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/cache/base_cache.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/cache/cache_result_merge.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/cache/local_byzer_storage_cache.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/cache/local_duckdb_storage_cache.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/cache/rag_file_meta.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/cache/simple_cache.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/conversation_to_queries.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/doc_filter.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/document_retriever.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/lang.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/llm_wrapper.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/loaders/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/loaders/docx_loader.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/loaders/excel_loader.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/qa_conversation_strategy.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/rag_config.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/rag_entry.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/raw_rag.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/relevant_utils.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/searchable.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/simple_directory_reader.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/simple_rag.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/stream_event/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/stream_event/event_writer.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/stream_event/types.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/token_checker.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/token_counter.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/token_limiter.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/token_limiter_utils.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/types.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/utils.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/variable_holder.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/regexproject/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/suffixproject/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/tsproject/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/_markitdown.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/auto_project_type.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/conversation_store.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/llm_client_interceptors.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/llms.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/log_capture.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/model_provider_selector.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/multi_turn.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/operate_config_api.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/print_table.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/project_structure.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/queue_communicate.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/request_event_queue.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/request_queue.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/rest.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/stream_thinking.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/tests.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/thread_utils.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/utils/types.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/tests/test_action_regex_project.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/tests/test_chat_auto_coder.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/tests/test_code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/tests/test_command_completer.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/tests/test_planner.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/tests/test_plugins.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/tests/test_privacy.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/tests/test_queue_communicate.py +0 -0
- {auto_coder-0.1.292 → auto_coder-0.1.293}/tests/test_symbols_utils.py +0 -0
|
@@ -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
|
|
@@ -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,
|
|
@@ -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
|
|
@@ -210,22 +210,22 @@ class LongContextRAG:
|
|
|
210
210
|
|
|
211
211
|
avg_tokens = statistics.mean(token_counts) if token_counts else 0
|
|
212
212
|
median_tokens = statistics.median(token_counts) if token_counts else 0
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
213
|
+
if not self.client:
|
|
214
|
+
logger.info(
|
|
215
|
+
"RAG Configuration:\n"
|
|
216
|
+
f" Total docs: {doc_num}\n"
|
|
217
|
+
f" Total tokens: {token_num}\n"
|
|
218
|
+
f" Tokenizer path: {self.tokenizer_path}\n"
|
|
219
|
+
f" Relevant score: {self.relevant_score}\n"
|
|
220
|
+
f" Token limit: {self.token_limit}\n"
|
|
221
|
+
f" Full text limit: {self.full_text_limit}\n"
|
|
222
|
+
f" Segment limit: {self.segment_limit}\n"
|
|
223
|
+
f" Buff limit: {self.buff_limit}\n"
|
|
224
|
+
f" Max doc tokens: {max(token_counts) if token_counts else 0}\n"
|
|
225
|
+
f" Min doc tokens: {min(token_counts) if token_counts else 0}\n"
|
|
226
|
+
f" Avg doc tokens: {avg_tokens:.2f}\n"
|
|
227
|
+
f" Median doc tokens: {median_tokens:.2f}\n"
|
|
228
|
+
)
|
|
229
229
|
|
|
230
230
|
def count_tokens(self, text: str) -> int:
|
|
231
231
|
if self.tokenizer is None:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.293"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.1.292"
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/common/code_auto_generate_editblock.py
RENAMED
|
File without changes
|
{auto_coder-0.1.292 → auto_coder-0.1.293}/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.292 → auto_coder-0.1.293}/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
|
{auto_coder-0.1.292 → auto_coder-0.1.293}/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.292 → auto_coder-0.1.293}/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.292 → auto_coder-0.1.293}/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
|
{auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/cache/local_byzer_storage_cache.py
RENAMED
|
File without changes
|
{auto_coder-0.1.292 → auto_coder-0.1.293}/src/autocoder/rag/cache/local_duckdb_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.292 → auto_coder-0.1.293}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py
RENAMED
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.292 → auto_coder-0.1.293}/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
|