auto-coder 0.1.309__tar.gz → 0.1.310__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.309 → auto_coder-0.1.310}/PKG-INFO +1 -1
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/auto_coder.egg-info/PKG-INFO +1 -1
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/auto_coder.egg-info/SOURCES.txt +1 -0
- auto_coder-0.1.310/src/autocoder/common/openai_content.py +256 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/long_context_rag.py +4 -1
- auto_coder-0.1.310/src/autocoder/version.py +1 -0
- auto_coder-0.1.309/src/autocoder/version.py +0 -1
- {auto_coder-0.1.309 → auto_coder-0.1.310}/LICENSE +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/README.md +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/setup.cfg +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/setup.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/auto_coder.egg-info/dependency_links.txt +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/auto_coder.egg-info/entry_points.txt +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/auto_coder.egg-info/requires.txt +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/auto_coder.egg-info/top_level.txt +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/agent/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/agent/auto_demand_organizer.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/agent/auto_filegroup.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/agent/auto_guess_query.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/agent/auto_learn_from_commit.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/agent/auto_review_commit.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/agent/auto_tool.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/agent/coder.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/agent/designer.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/agent/planner.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/agent/project_reader.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/auto_coder.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/auto_coder_rag.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/auto_coder_runner.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/auto_coder_server.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/benchmark.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/chat/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/chat_auto_coder.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/chat_auto_coder_lang.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/command_args.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/command_parser.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/commands/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/commands/auto_command.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/commands/auto_web.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/commands/tools.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/JupyterClient.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/ShellClient.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/action_yml_file_manager.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/anything2images.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/anything2img.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/audio.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/auto_coder_lang.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/auto_configure.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/buildin_tokenizer.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/chunk_validation.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/cleaner.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/code_auto_execute.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/code_auto_generate.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/code_auto_generate_diff.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/code_auto_merge.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/code_auto_merge_diff.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/code_auto_merge_strict_diff.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/code_modification_ranker.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/command_completer.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/command_generator.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/command_templates.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/computer_use.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/conf_import_export.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/conf_validator.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/const.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/context_pruner.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/conversation_pruner.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/files.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/git_utils.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/global_cancel.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/image_to_page.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/index_import_export.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/interpreter.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/llm_rerank.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/mcp_hub.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/mcp_server.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/mcp_servers/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/mcp_servers/mcp_server_gpt4o_mini_search.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/mcp_tools.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/memory_manager.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/model_speed_test.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/printer.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/recall_validation.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/result_manager.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/screenshots.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/search.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/search_replace.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/shells.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/stats_panel.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/stream_out_type.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/sys_prompt.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/text.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/types.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/common/utils_code_auto_generate.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/data/byzerllm.md +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/data/tokenizer.json +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/db/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/db/store.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/dispacher/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/dispacher/actions/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/dispacher/actions/action.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/dispacher/actions/copilot.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/events/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/events/event_content.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/events/event_manager.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/events/event_manager_singleton.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/events/event_store.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/events/event_types.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/index/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/index/entry.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/index/filter/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/index/filter/normal_filter.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/index/filter/quick_filter.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/index/for_command.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/index/index.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/index/symbols_utils.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/index/types.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/lang.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/memory/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/memory/active_context_manager.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/memory/active_package.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/memory/async_processor.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/memory/directory_mapper.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/models.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/plugins/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/plugins/dynamic_completion_example.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/plugins/git_helper_plugin.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/plugins/sample_plugin.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/plugins/token_helper_plugin.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/plugins/utils.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/privacy/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/privacy/model_filter.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/pyproject/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/api_server.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/cache/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/cache/base_cache.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/cache/cache_result_merge.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/cache/local_byzer_storage_cache.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/cache/local_duckdb_storage_cache.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/cache/rag_file_meta.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/cache/simple_cache.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/conversation_to_queries.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/doc_filter.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/document_retriever.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/lang.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/llm_wrapper.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/loaders/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/loaders/docx_loader.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/loaders/excel_loader.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/qa_conversation_strategy.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/rag_config.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/rag_entry.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/raw_rag.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/relevant_utils.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/searchable.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/simple_directory_reader.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/simple_rag.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/stream_event/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/stream_event/event_writer.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/stream_event/types.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/token_checker.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/token_counter.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/token_limiter.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/token_limiter_utils.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/types.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/utils.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/rag/variable_holder.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/regexproject/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/run_context.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/suffixproject/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/tsproject/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/_markitdown.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/auto_project_type.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/conversation_store.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/llm_client_interceptors.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/llms.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/log_capture.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/model_provider_selector.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/multi_turn.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/operate_config_api.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/print_table.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/project_structure.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/queue_communicate.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/request_event_queue.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/request_queue.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/rest.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/stream_thinking.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/tests.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/thread_utils.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/types.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/tests/test_action_regex_project.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/tests/test_action_yml_file_manager.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/tests/test_chat_auto_coder.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/tests/test_code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/tests/test_command_completer.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/tests/test_planner.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/tests/test_plugins.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/tests/test_privacy.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/tests/test_queue_communicate.py +0 -0
- {auto_coder-0.1.309 → auto_coder-0.1.310}/tests/test_symbols_utils.py +0 -0
|
@@ -80,6 +80,7 @@ src/autocoder/common/mcp_server.py
|
|
|
80
80
|
src/autocoder/common/mcp_tools.py
|
|
81
81
|
src/autocoder/common/memory_manager.py
|
|
82
82
|
src/autocoder/common/model_speed_test.py
|
|
83
|
+
src/autocoder/common/openai_content.py
|
|
83
84
|
src/autocoder/common/printer.py
|
|
84
85
|
src/autocoder/common/recall_validation.py
|
|
85
86
|
src/autocoder/common/result_manager.py
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
from typing import Any, Dict, List, Optional, Union
|
|
2
|
+
import base64
|
|
3
|
+
import os
|
|
4
|
+
from enum import Enum
|
|
5
|
+
from pydantic import BaseModel, Field, validator
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class ContentType(str, Enum):
|
|
9
|
+
"""Type of content in the OpenAI chat message."""
|
|
10
|
+
TEXT = "text"
|
|
11
|
+
IMAGE_URL = "image_url"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class ImageUrl(BaseModel):
|
|
15
|
+
"""Image URL structure in OpenAI chat messages."""
|
|
16
|
+
url: str = Field(..., description="URL of the image, can be http(s) or data URI")
|
|
17
|
+
|
|
18
|
+
@validator('url')
|
|
19
|
+
def validate_url(cls, v):
|
|
20
|
+
"""Validate that URL is either an http(s) URL or a valid data URI."""
|
|
21
|
+
if v.startswith(('http://', 'https://')):
|
|
22
|
+
return v
|
|
23
|
+
elif v.startswith('data:image/'):
|
|
24
|
+
return v
|
|
25
|
+
else:
|
|
26
|
+
raise ValueError("Image URL must be http(s) or data URI format")
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class TextContent(BaseModel):
|
|
30
|
+
"""Text content in OpenAI chat messages."""
|
|
31
|
+
type: str = ContentType.TEXT
|
|
32
|
+
text: str
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class ImageUrlContent(BaseModel):
|
|
36
|
+
"""Image URL content in OpenAI chat messages."""
|
|
37
|
+
type: str = ContentType.IMAGE_URL
|
|
38
|
+
image_url: Union[str, ImageUrl]
|
|
39
|
+
|
|
40
|
+
@validator('image_url')
|
|
41
|
+
def validate_image_url(cls, v):
|
|
42
|
+
"""Convert string to ImageUrl if necessary."""
|
|
43
|
+
if isinstance(v, str):
|
|
44
|
+
return ImageUrl(url=v)
|
|
45
|
+
return v
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
ContentItem = Union[TextContent, ImageUrlContent]
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class OpenAIMessage(BaseModel):
|
|
52
|
+
"""Model for an OpenAI chat message."""
|
|
53
|
+
role: str
|
|
54
|
+
content: Union[str, List[ContentItem]]
|
|
55
|
+
name: Optional[str] = None
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class OpenAIConversation(BaseModel):
|
|
59
|
+
"""Model for a conversation with OpenAI."""
|
|
60
|
+
messages: List[OpenAIMessage]
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def is_structured_content(content: Any) -> bool:
|
|
64
|
+
"""
|
|
65
|
+
Check if the content is structured (list of items with type field).
|
|
66
|
+
|
|
67
|
+
Args:
|
|
68
|
+
content: The content to check
|
|
69
|
+
|
|
70
|
+
Returns:
|
|
71
|
+
bool: True if the content is structured, False otherwise
|
|
72
|
+
"""
|
|
73
|
+
if not isinstance(content, list):
|
|
74
|
+
return False
|
|
75
|
+
|
|
76
|
+
if not content:
|
|
77
|
+
return False
|
|
78
|
+
|
|
79
|
+
# Check if all items have a 'type' field
|
|
80
|
+
return all(isinstance(item, dict) and 'type' in item for item in content)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def encode_image_to_base64(image_path: str) -> str:
|
|
84
|
+
"""
|
|
85
|
+
Encode an image file to base64.
|
|
86
|
+
|
|
87
|
+
Args:
|
|
88
|
+
image_path: Path to the image file
|
|
89
|
+
|
|
90
|
+
Returns:
|
|
91
|
+
str: Base64-encoded image data
|
|
92
|
+
"""
|
|
93
|
+
if not os.path.exists(image_path):
|
|
94
|
+
raise FileNotFoundError(f"Image file not found: {image_path}")
|
|
95
|
+
|
|
96
|
+
with open(image_path, "rb") as image_file:
|
|
97
|
+
encoded_string = base64.b64encode(image_file.read()).decode('utf-8')
|
|
98
|
+
|
|
99
|
+
# Determine content type based on file extension
|
|
100
|
+
file_ext = os.path.splitext(image_path)[1].lower()
|
|
101
|
+
content_type = {
|
|
102
|
+
'.jpg': 'image/jpeg',
|
|
103
|
+
'.jpeg': 'image/jpeg',
|
|
104
|
+
'.png': 'image/png',
|
|
105
|
+
'.gif': 'image/gif',
|
|
106
|
+
'.webp': 'image/webp',
|
|
107
|
+
}.get(file_ext, 'image/jpeg')
|
|
108
|
+
|
|
109
|
+
return f"data:{content_type};base64,{encoded_string}"
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def create_text_content(text: str) -> TextContent:
|
|
113
|
+
"""
|
|
114
|
+
Create a text content item.
|
|
115
|
+
|
|
116
|
+
Args:
|
|
117
|
+
text: The text content
|
|
118
|
+
|
|
119
|
+
Returns:
|
|
120
|
+
TextContent: A text content item
|
|
121
|
+
"""
|
|
122
|
+
return TextContent(text=text)
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
def create_image_content(image_path_or_url: str) -> ImageUrlContent:
|
|
126
|
+
"""
|
|
127
|
+
Create an image content item from a file path or URL.
|
|
128
|
+
|
|
129
|
+
Args:
|
|
130
|
+
image_path_or_url: Path to the image file or an image URL
|
|
131
|
+
|
|
132
|
+
Returns:
|
|
133
|
+
ImageUrlContent: An image content item
|
|
134
|
+
"""
|
|
135
|
+
# If it's a URL already, use it directly
|
|
136
|
+
if image_path_or_url.startswith(('http://', 'https://', 'data:')):
|
|
137
|
+
return ImageUrlContent(image_url=image_path_or_url)
|
|
138
|
+
|
|
139
|
+
# Otherwise, treat it as a file path and encode it
|
|
140
|
+
return ImageUrlContent(image_url=encode_image_to_base64(image_path_or_url))
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def normalize_content(content: Any) -> Union[str, List[ContentItem]]:
|
|
144
|
+
"""
|
|
145
|
+
Normalize content to either a string or a list of structured content items.
|
|
146
|
+
|
|
147
|
+
Args:
|
|
148
|
+
content: The content to normalize
|
|
149
|
+
|
|
150
|
+
Returns:
|
|
151
|
+
Union[str, List[ContentItem]]: Normalized content
|
|
152
|
+
"""
|
|
153
|
+
if isinstance(content, str):
|
|
154
|
+
return content
|
|
155
|
+
|
|
156
|
+
if is_structured_content(content):
|
|
157
|
+
normalized_items = []
|
|
158
|
+
for item in content:
|
|
159
|
+
if item['type'] == ContentType.TEXT:
|
|
160
|
+
normalized_items.append(create_text_content(item['text']))
|
|
161
|
+
elif item['type'] == ContentType.IMAGE_URL:
|
|
162
|
+
normalized_items.append(ImageUrlContent(image_url=item['image_url']))
|
|
163
|
+
return normalized_items
|
|
164
|
+
|
|
165
|
+
# If it's neither a string nor structured content, convert to string
|
|
166
|
+
return str(content)
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
def create_message(role: str, content: Union[str, List[ContentItem]], name: Optional[str] = None) -> OpenAIMessage:
|
|
170
|
+
"""
|
|
171
|
+
Create an OpenAI chat message.
|
|
172
|
+
|
|
173
|
+
Args:
|
|
174
|
+
role: Role of the message sender (system, user, assistant)
|
|
175
|
+
content: Content of the message (string or structured content)
|
|
176
|
+
name: Optional name of the sender
|
|
177
|
+
|
|
178
|
+
Returns:
|
|
179
|
+
OpenAIMessage: An OpenAI chat message
|
|
180
|
+
"""
|
|
181
|
+
return OpenAIMessage(
|
|
182
|
+
role=role,
|
|
183
|
+
content=normalize_content(content),
|
|
184
|
+
name=name
|
|
185
|
+
)
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
def process_conversations(conversations: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
|
|
189
|
+
"""
|
|
190
|
+
处理会话列表,确保每个消息都符合标准格式,并只保留文本内容。
|
|
191
|
+
|
|
192
|
+
Args:
|
|
193
|
+
conversations: 会话列表,可能包含各种格式的消息
|
|
194
|
+
|
|
195
|
+
Returns:
|
|
196
|
+
List[Dict[str, Any]]: 标准化后的会话列表,每个消息都有 role 和 content 字段
|
|
197
|
+
|
|
198
|
+
例子:
|
|
199
|
+
>>> conversations = [
|
|
200
|
+
... {"role": "user", "content": "Hello"},
|
|
201
|
+
... {"role": "assistant", "content": "Hi, how can I help?"},
|
|
202
|
+
... {"role": "user", "content": [
|
|
203
|
+
... {"type": "text", "text": "What's in this image?"},
|
|
204
|
+
... {"type": "image_url", "image_url": "data:image/jpeg;base64,/9j/4AAQ..."}
|
|
205
|
+
... ]}
|
|
206
|
+
... ]
|
|
207
|
+
>>> processed = process_conversations(conversations)
|
|
208
|
+
>>> # 结果保持相同的结构,但确保格式一致性
|
|
209
|
+
|
|
210
|
+
输出格式要是这样的:
|
|
211
|
+
[
|
|
212
|
+
{"role": "user", "content": "Hello"},
|
|
213
|
+
{"role": "assistant", "content": "Hi, how can I help?"},
|
|
214
|
+
{"role": "user", "content": "What's in this image?"}
|
|
215
|
+
]
|
|
216
|
+
|
|
217
|
+
只保留 text 内容。如果有多个 text 内容,用换行符连接弄成一个。
|
|
218
|
+
|
|
219
|
+
"""
|
|
220
|
+
processed_conversations = []
|
|
221
|
+
|
|
222
|
+
for message in conversations:
|
|
223
|
+
# 确保消息有 role 字段
|
|
224
|
+
if "role" not in message:
|
|
225
|
+
raise ValueError(f"Message missing 'role' field: {message}")
|
|
226
|
+
|
|
227
|
+
role = message["role"]
|
|
228
|
+
|
|
229
|
+
# 处理 content 字段,确保存在
|
|
230
|
+
if "content" not in message:
|
|
231
|
+
processed_content = "" # 如果不存在,设置为空字符串
|
|
232
|
+
else:
|
|
233
|
+
content = message["content"]
|
|
234
|
+
|
|
235
|
+
# 处理结构化内容
|
|
236
|
+
if isinstance(content, list) and is_structured_content(content):
|
|
237
|
+
# 提取所有文本内容并用换行符连接
|
|
238
|
+
text_contents = []
|
|
239
|
+
for item in content:
|
|
240
|
+
if item.get('type') == ContentType.TEXT and 'text' in item:
|
|
241
|
+
text_contents.append(item['text'])
|
|
242
|
+
processed_content = '\n'.join(text_contents)
|
|
243
|
+
else:
|
|
244
|
+
# 如果是字符串或其他类型,确保转换为字符串
|
|
245
|
+
processed_content = str(content) if content is not None else ""
|
|
246
|
+
|
|
247
|
+
# 构建标准化的消息
|
|
248
|
+
processed_message = {"role": role, "content": processed_content}
|
|
249
|
+
|
|
250
|
+
# 如果原消息有 name 字段,也加入
|
|
251
|
+
if "name" in message and message["name"]:
|
|
252
|
+
processed_message["name"] = message["name"]
|
|
253
|
+
|
|
254
|
+
processed_conversations.append(processed_message)
|
|
255
|
+
|
|
256
|
+
return processed_conversations
|
|
@@ -40,6 +40,7 @@ from autocoder.rag.lang import get_message_with_format_and_newline
|
|
|
40
40
|
from autocoder.rag.qa_conversation_strategy import get_qa_strategy
|
|
41
41
|
from autocoder.rag.searchable import SearchableResults
|
|
42
42
|
from autocoder.rag.conversation_to_queries import extract_search_queries
|
|
43
|
+
from autocoder.common import openai_content as OpenAIContentProcessor
|
|
43
44
|
try:
|
|
44
45
|
from autocoder_pro.rag.llm_compute import LLMComputeEngine
|
|
45
46
|
pro_version = version("auto-coder-pro")
|
|
@@ -348,7 +349,7 @@ class LongContextRAG:
|
|
|
348
349
|
role_mapping=None,
|
|
349
350
|
llm_config: Dict[str, Any] = {},
|
|
350
351
|
extra_request_params: Dict[str, Any] = {}
|
|
351
|
-
):
|
|
352
|
+
):
|
|
352
353
|
try:
|
|
353
354
|
return self._stream_chat_oai(
|
|
354
355
|
conversations,
|
|
@@ -399,6 +400,7 @@ class LongContextRAG:
|
|
|
399
400
|
llm_config: Dict[str, Any] = {},
|
|
400
401
|
extra_request_params: Dict[str, Any] = {}
|
|
401
402
|
):
|
|
403
|
+
conversations = OpenAIContentProcessor.process_conversations(conversations)
|
|
402
404
|
if self.client:
|
|
403
405
|
model = model or self.args.model
|
|
404
406
|
response = self.client.chat.completions.create(
|
|
@@ -415,6 +417,7 @@ class LongContextRAG:
|
|
|
415
417
|
target_llm = self.llm.get_sub_client("qa_model")
|
|
416
418
|
|
|
417
419
|
query = conversations[-1]["content"]
|
|
420
|
+
|
|
418
421
|
context = []
|
|
419
422
|
|
|
420
423
|
if (
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.310"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.1.309"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.309 → auto_coder-0.1.310}/src/autocoder/common/code_auto_generate_editblock.py
RENAMED
|
File without changes
|
{auto_coder-0.1.309 → auto_coder-0.1.310}/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.309 → auto_coder-0.1.310}/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
|
|
File without changes
|
{auto_coder-0.1.309 → auto_coder-0.1.310}/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
|
|
File without changes
|
{auto_coder-0.1.309 → auto_coder-0.1.310}/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
|
|
File without changes
|
|
File without changes
|
|
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.309 → auto_coder-0.1.310}/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.309 → auto_coder-0.1.310}/src/autocoder/rag/cache/local_byzer_storage_cache.py
RENAMED
|
File without changes
|
{auto_coder-0.1.309 → auto_coder-0.1.310}/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
|
|
File without changes
|
{auto_coder-0.1.309 → auto_coder-0.1.310}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py
RENAMED
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.309 → auto_coder-0.1.310}/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
|
|
File without changes
|