auto-coder 3.0.44__tar.gz → 3.0.45__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.
- {auto_coder-3.0.44/src/auto_coder.egg-info → auto_coder-3.0.45}/PKG-INFO +1 -1
- {auto_coder-3.0.44 → auto_coder-3.0.45}/pyproject.toml +1 -1
- {auto_coder-3.0.44 → auto_coder-3.0.45/src/auto_coder.egg-info}/PKG-INFO +1 -1
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/auto_coder.egg-info/SOURCES.txt +2 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shells.py +57 -10
- auto_coder-3.0.45/src/autocoder/terminal_core/cloud_block_command.py +86 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_core/cloud_bridge.py +22 -3
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_core/cloud_command_dispatcher.py +99 -8
- auto_coder-3.0.45/src/autocoder/terminal_core/cloud_file_uploader.py +122 -0
- auto_coder-3.0.45/src/autocoder/terminal_core/output.py +68 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/version.py +1 -1
- auto_coder-3.0.44/src/autocoder/terminal_core/output.py +0 -31
- {auto_coder-3.0.44 → auto_coder-3.0.45}/LICENSE +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/MANIFEST.in +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/README.md +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/requirements.txt +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/setup.cfg +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/setup.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/auto_coder.egg-info/dependency_links.txt +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/auto_coder.egg-info/entry_points.txt +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/auto_coder.egg-info/requires.txt +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/auto_coder.egg-info/top_level.txt +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/auto_demand_organizer.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/auto_filegroup.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/auto_guess_query.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/auto_learn.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/auto_learn_from_commit.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/auto_review_commit.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/auto_tool.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/agent_hub.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/agentic_lang.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/agentic_tool_display.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/base_agent.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/default_tools.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/test_base_agent.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/tool_registry.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/tools/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/tools/ask_followup_question_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/tools/attempt_completion_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/tools/base_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/tools/example_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/tools/execute_command_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/tools/list_files_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/tools/plan_mode_respond_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/tools/read_file_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/tools/replace_in_file_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/tools/search_files_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/tools/talk_to_group_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/tools/talk_to_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/tools/write_to_file_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/types.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/base_agentic/utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/coder.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/designer.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/entry_command_agent/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/entry_command_agent/auto_tool.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/entry_command_agent/chat.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/entry_command_agent/designer.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/entry_command_agent/generate_command.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/entry_command_agent/project_reader.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/entry_command_agent/voice2text.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/planner.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/agent/project_reader.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/auto_coder.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/auto_coder_rag.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/auto_coder_runner.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/auto_coder_terminal.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/auto_coder_terminal_v3.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/chat/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/chat/conf_command.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/chat/conf_spec.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/chat/models_command.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/chat/rules_command.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/chat_auto_coder_lang.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/command_args.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/commands/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/commands/auto_command.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/commands/auto_web.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/commands/tools.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/JupyterClient.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/ShellClient.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/ac_style_command_parser/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/ac_style_command_parser/config.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/ac_style_command_parser/parser.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/ac_style_command_parser/test_parser.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/ac_style_command_parser/test_typed_parser.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/ac_style_command_parser/typed_parser.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/action_yml_file_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/agent_events/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/agent_events/agent_event_emitter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/agent_events/event_factory.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/agent_events/examples.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/agent_events/types.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/agent_events/utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/agent_hooks/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/agent_hooks/examples.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/agent_hooks/hook_executor.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/agent_hooks/hook_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/agent_hooks/types.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/agent_hooks/utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/agent_query_queue/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/agent_query_queue/queue_executor.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/agent_query_queue/queue_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/agents/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/agents/agent_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/agents/agent_parser.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/agents/example_usage.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/agents/integration_example.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/agents/test_agent_parser.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/anything2images.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/anything2img.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/async_prompt.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/async_utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/audio.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/auto_coder_lang.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/auto_configure.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/autocoderargs_parser/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/autocoderargs_parser/parser.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/autocoderargs_parser/tests/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/autocoderargs_parser/tests/test_args_parser.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/autocoderargs_parser/tests/test_token_parser.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/autocoderargs_parser/token_parser.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/buildin_tokenizer.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/chunk_validation.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/cli_invocation.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/code_auto_execute.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/code_auto_generate.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/code_auto_generate_diff.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/code_auto_merge.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/code_auto_merge_diff.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/code_auto_merge_editblock.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/code_auto_merge_strict_diff.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/code_modification_ranker.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/command_completer.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/command_file_manager/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/command_file_manager/examples.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/command_file_manager/manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/command_file_manager/models.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/command_file_manager/test_command_file_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/command_file_manager/utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/command_generator.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/command_templates.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/computer_use.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conf_import_export.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conf_utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conf_validator.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/const.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/backup/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/backup/backup_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/backup/restore_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/cache/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/cache/base_cache.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/cache/cache_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/cache/memory_cache.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/config.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/exceptions.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/file_locker.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/get_conversation_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/llm_stats_models.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/models.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/runtime_registry.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/search/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/search/filter_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/search/text_searcher.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/storage/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/storage/base_storage.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/storage/file_storage.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/conversations/storage/index_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/core_config/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/core_config/agentic_mode_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/core_config/base_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/core_config/compatibility.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/core_config/config_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/core_config/conversation_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/core_config/exclude_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/core_config/file_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/core_config/human_as_model_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/core_config/lib_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/core_config/main_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/core_config/merge_utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/core_config/mode_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/core_config/models.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/core_config/test_memory_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/env_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/env_manager_usage_example.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_checkpoint/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_checkpoint/backup.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_checkpoint/conversation_checkpoint.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_checkpoint/manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_checkpoint/models.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_checkpoint/store.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_checkpoint/test_backup.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_checkpoint/test_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_checkpoint/test_models.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_checkpoint/test_store.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_checkpoint/test_utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_checkpoint/utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_handler/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_handler/add_files_handler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_handler/chat_handler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_handler/coding_handler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_handler/commit_handler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_handler/lib_handler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_handler/list_files_handler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_handler/models_handler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_handler/remove_files_handler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_monitor/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_monitor/monitor.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/file_monitor/test_file_monitor.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/files.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/git_utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/global_cancel.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/ignorefiles/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/ignorefiles/ignore_file_utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/ignorefiles/test_ignore_file_utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/image_to_page.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/index_import_export.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/international/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/international/demo_international.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/international/message_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/international/messages/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/international/messages/async_command_messages.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/international/messages/auto_coder_messages.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/international/messages/chat_auto_coder_messages.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/international/messages/command_help_messages.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/international/messages/conversation_command_messages.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/international/messages/fast_command_messages.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/international/messages/git_helper_plugin_messages.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/international/messages/queue_command_messages.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/international/messages/rules_command_messages.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/international/messages/sdk_messages.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/international/messages/token_helper_plugin_messages.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/international/messages/tool_display_messages.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/international/messages/workflow_exception_messages.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/international/test_international.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/interpreter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/base_linter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/config_loader.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/formatters/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/formatters/base_formatter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/formatters/raw_formatter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/linter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/linter_factory.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/linter_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/linters/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/linters/java_linter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/linters/python_linter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/linters/typescript_linter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/models/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/models/lint_result.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/models.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/tests/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/tests/test_config_loader.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/tests/test_config_loading.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/tests/test_factory_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/tests/test_formatters.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/tests/test_integration.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/tests/test_java_linter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/tests/test_linters.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/tests/test_models.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/tests/verify_config_loading.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/linter_core/tests/verify_fixes.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/llm_friendly_package/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/llm_friendly_package/base_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/llm_friendly_package/docs_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/llm_friendly_package/library_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/llm_friendly_package/main_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/llm_friendly_package/models.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/llm_friendly_package/test_llm_friendly_package.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/llms/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/llms/demo_error_handling.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/llms/factory.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/llms/manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/llms/pricing.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/llms/registry.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/llms/schema.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/llms/simple_demo.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/llms/test_quick_model.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/llms/test_remove_functionality.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/llms/tests/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/llms/tests/test_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/llms/tests/test_registry.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/memory_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/model_speed_tester.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/openai_content.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/printer.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/priority_directory_finder/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/priority_directory_finder/examples.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/priority_directory_finder/finder.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/priority_directory_finder/models.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/priority_directory_finder/test_priority_directory_finder.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/project_scanner/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/project_scanner/compat.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/project_scanner/scanner.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/project_tracker/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/project_tracker/api.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/project_tracker/demo.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/project_tracker/tracker.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/project_tracker/types.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pruner/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pruner/agentic_conversation_pruner.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pruner/context_pruner.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pruner/conversation_message_ids_api.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pruner/conversation_message_ids_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pruner/conversation_message_ids_pruner.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pruner/conversation_normalizer.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pruner/conversation_pruner.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pruner/test_agentic_conversation_pruner.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pruner/test_context_pruner.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pruner/test_conversation_normalizer.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pruner/test_tool_content_detector.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pruner/tool_content_detector.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pruner/tools/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pruner/tools/query_message_ids.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pruner/tools/test_agentic_pruning_logic.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pruner/tools/test_message_ids_pruning_only.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pull_requests/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pull_requests/base_provider.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pull_requests/config.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pull_requests/example.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pull_requests/exceptions.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pull_requests/manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pull_requests/models.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pull_requests/providers/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pull_requests/providers/gitcode_provider.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pull_requests/providers/gitee_provider.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pull_requests/providers/github_provider.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pull_requests/providers/gitlab_provider.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/pull_requests/utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/rag_manager/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/rag_manager/rag_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/recall_validation.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/result_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/rulefiles/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/rulefiles/api.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/rulefiles/core/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/rulefiles/core/manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/rulefiles/core/selector.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/rulefiles/models/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/rulefiles/models/index.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/rulefiles/models/init_rule.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/rulefiles/models/rule_file.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/rulefiles/models/rule_relevance.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/rulefiles/models/summary.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/rulefiles/test_rulefiles.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/rulefiles/test_subagents_filter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/rulefiles/utils/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/rulefiles/utils/log_utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/rulefiles/utils/monitor.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/rulefiles/utils/parser.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/run_cmd.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/save_formatted_log.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/screenshots.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/search.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/search_replace.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/search_replace_patch/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/search_replace_patch/base.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/search_replace_patch/manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/search_replace_patch/patch_replacer.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/search_replace_patch/similarity_replacer.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/search_replace_patch/string_replacer.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/search_replace_patch/tests/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/search_replace_patch/tests/run_tests.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/search_replace_patch/tests/test_base.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/search_replace_patch/tests/test_empty_line_insert.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/search_replace_patch/tests/test_integration.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/search_replace_patch/tests/test_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/search_replace_patch/tests/test_patch_replacer.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/search_replace_patch/tests/test_regex_replacer.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/search_replace_patch/tests/test_similarity_replacer.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/background_process_notifier.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/command_executor.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/error_recovery.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/exceptions.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/interactive_executor.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/interactive_pexpect_process.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/interactive_process.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/interactive_session_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/monitoring.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/process_cleanup.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/process_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/test_interactive_pexpect_process.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/tests/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/tests/conftest.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/tests/test_background_process_notifier.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/tests/test_command_executor.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/tests/test_error_recovery.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/tests/test_exceptions.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/tests/test_execute_batch.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/tests/test_indented_batch_commands.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/tests/test_integration.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/tests/test_monitoring.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/tests/test_performance.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/tests/test_process_cleanup.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/tests/test_process_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/tests/test_timeout_config.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/tests/test_timeout_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/tests/test_windows_support.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/timeout_config.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/timeout_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/shell_commands/windows_support.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/skills/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/skills/manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/stats_panel.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/stream_out_type.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/sys_prompt.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/terminal_paste/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/terminal_paste/clipboard_image.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/terminal_paste/demo.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/terminal_paste/demo_paste_functionality.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/terminal_paste/paste_handler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/terminal_paste/paste_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/terminal_paste/tests/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/terminal_paste/tests/test_paste_handler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/terminal_paste/tests/test_paste_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/terminal_paste/utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/test_autocoder_args.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/test_env_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/test_env_manager_integration.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/test_run_cmd.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/text_similarity/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/text_similarity/demo.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/text_similarity/examples.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/text_similarity/test_text_similarity.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/text_similarity/text_similarity.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/text_similarity/utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/todos/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/todos/cache/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/todos/cache/base_cache.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/todos/cache/cache_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/todos/cache/memory_cache.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/todos/config.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/todos/exceptions.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/todos/formatting.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/todos/get_todo_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/todos/manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/todos/models.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/todos/storage/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/todos/storage/base_storage.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/todos/storage/file_storage.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/token_cost_caculate.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/tokens/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/tokens/counter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/tokens/file_detector.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/tokens/filters.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/tokens/models.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/tools_manager/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/tools_manager/examples.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/tools_manager/manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/tools_manager/models.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/tools_manager/test_tools_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/tools_manager/utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/types.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/utils_code_auto_generate.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_callbacks.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_change_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/ac_mod_list_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/ac_mod_read_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/ac_mod_write_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/ask_followup_question_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/attempt_completion_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/base_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/conversation_message_ids_read_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/conversation_message_ids_write_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/count_tokens_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/dangerous_command_checker.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/execute_command_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/execute_external_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/execute_workflow_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/extra_docs/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/extra_docs/ac_mod_files.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/extra_docs/interactive_session.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/extra_docs/plan_format.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/extra_docs/skill.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/extra_docs/web_research.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/extra_docs/workflow_subagents.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/extract_text_to_file_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/lint_report.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/linter_config_models.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/linter_enabled_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/list_code_definition_names_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/list_files_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/load_extra_document_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/manage_background_tasks_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/plan_mode_respond_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/read_file_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/read_image_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/repl_close_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/repl_open_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/repl_send_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/replace_in_file/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/replace_in_file/apply.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/replace_in_file/failure_report.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/replace_in_file/parsing.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/replace_in_file/paths.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/replace_in_file_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/run_named_subagents_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/run_subagents_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/search_files_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/test_write_to_file_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/todo_read_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/todo_write_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/use_rag_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/web_crawl_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/web_search_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_tools/write_to_file_tool_resolver.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/agentic_edit_types.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/llm_stream_parser.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/runner/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/runner/base_runner.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/runner/file_based_event_runner.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/runner/sdk_runner.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/runner/terminal_runner.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/runner/tool_display.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/subagents/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/subagents/backends/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/subagents/backends/cli_process.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/subagents/backends/external_cli_drivers.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/subagents/backends/external_cli_process.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/subagents/backends/in_process.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/subagents/client.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/subagents/models.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/subagents/prompt_provider.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/subagents/tests/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/subagents/tests/test_subagent_client.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/test_agentic_callbacks.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/test_agentic_edit.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/test_agentic_edit_conversation_lifecycle.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/test_llm_stream_parser.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/tool_caller/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/tool_caller/default_tool_resolver_map.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/tool_caller/integration_test.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/tool_caller/plugins/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/tool_caller/plugins/base_plugin.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/tool_caller/plugins/examples/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/tool_caller/plugins/examples/command_policy_plugin.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/tool_caller/plugins/examples/logging_plugin.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/tool_caller/plugins/examples/security_filter_plugin.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/tool_caller/plugins/examples/workspace_delta_plugin.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/tool_caller/plugins/plugin_interface.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/tool_caller/test_hook_mechanism.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/tool_caller/test_tool_caller.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/tool_caller/tool_call_plugin_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/tool_caller/tool_caller.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/agent/tool_caller/usage_example.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/code_agentic_editblock_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/code_auto_generate.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/code_auto_generate_diff.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/code_auto_generate_editblock.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/code_auto_generate_strict_diff.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/code_auto_merge.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/code_auto_merge_diff.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/code_auto_merge_editblock.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/code_auto_merge_strict_diff.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/code_diff_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/code_editblock_events/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/code_editblock_events/manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/code_editblock_events/types.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/code_editblock_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/code_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/v2/code_strict_diff_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/wrap_llm_hint/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/wrap_llm_hint/test_wrap_llm_hint.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/wrap_llm_hint/utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/common/wrap_llm_hint/wrap_llm_hint.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/compilers/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/compilers/base_compiler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/compilers/compiler_config_api.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/compilers/compiler_config_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/compilers/compiler_factory.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/compilers/java_compiler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/compilers/models.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/compilers/normal_compiler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/compilers/provided_compiler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/compilers/python_compiler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/compilers/reactjs_compiler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/compilers/shadow_compiler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/compilers/vue_compiler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/completer/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/completer/command_completer_v2.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/completer/tests/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/completer/tests/test_task_completion.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/data/byzerllm.md +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/data/tokenizer.json +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/db/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/db/store.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/default_project/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/dispacher/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/dispacher/actions/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/dispacher/actions/action.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/dispacher/actions/copilot.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/events/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/events/event_content.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/events/event_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/events/event_manager_singleton.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/events/event_store.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/events/event_types.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/helper/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/helper/project_creator.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/helper/rag_doc_creator.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/index/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/index/entry.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/index/filter/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/index/filter/agentic_filter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/index/filter/normal_filter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/index/filter/quick_filter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/index/for_command.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/index/index.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/index/symbols_utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/index/tests/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/index/tests/run_tests.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/index/tests/test_entry.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/index/tests/test_index_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/index/tests/test_module_integration.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/index/tests/test_symbols_utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/index/types.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/inner/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/inner/agentic.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/inner/async_command_handler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/inner/conversation_command_handlers.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/inner/merge_command_handler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/inner/queue_command_handler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/lang.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/linters/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/linters/base_linter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/linters/linter_factory.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/linters/models.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/linters/normal_linter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/linters/python_linter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/linters/reactjs_linter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/linters/shadow_linter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/linters/test_python_linter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/linters/test_reactjs_linter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/linters/test_vue_linter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/linters/vue_linter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/memory/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/memory/agent_executor.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/memory/context_provider.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/memory/manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/memory/registry.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/memory/scheduler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/memory/sources/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/memory/sources/ac_modules.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/memory/sources/history.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/memory/store.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/memory/tasks/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/memory/tasks/base.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/memory/tasks/history_memory_mining.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/memory/tasks/module_context_refresh.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/memory/tests/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/memory/tests/test_memory.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/models.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/plugins/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/plugins/git_helper_plugin.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/plugins/token_helper_plugin.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/plugins/utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/privacy/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/privacy/model_filter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/pyproject/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/agentic_rag.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/api_server.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/cache/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/cache/base_cache.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/cache/cache_result_merge.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/cache/failed_files_utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/cache/local_byzer_storage_cache.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/cache/local_duckdb_storage_cache.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/cache/rag_file_meta.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/cache/simple_cache.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/conversation_to_queries.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/doc_filter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/document_retriever.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/lang.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/llm_wrapper.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/loaders/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/loaders/docx_loader.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/loaders/excel_loader.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/loaders/filter_utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/loaders/image_loader.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/long_context_rag.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/qa_conversation_strategy.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/rag_config.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/rag_entry.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/relevant_utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/sdk/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/sdk/client.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/sdk/models.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/sdk/utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/searchable.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/stream_event/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/stream_event/event_writer.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/stream_event/types.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/terminal/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/terminal/args.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/terminal/bootstrap.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/terminal/command_handlers.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/terminal/formatters/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/terminal/formatters/base.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/terminal/formatters/json_format.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/terminal/formatters/stream_json.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/terminal/formatters/text.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/terminal/init.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/terminal/utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/test_agentic_rag.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/test_doc_filter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/test_long_context_rag.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/test_token_limiter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/token_checker.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/token_counter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/token_limiter.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/token_limiter_utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/tools/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/tools/bochaai_example.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/tools/bochaai_sdk.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/tools/metaso_example.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/tools/metaso_sdk.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/tools/recall_tool.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/tools/run_integration_tests.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/tools/search_tool.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/tools/test_all_providers.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/tools/test_bochaai_integration.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/tools/test_final_integration.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/tools/test_metaso_integration.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/tools/test_metaso_real.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/tools/test_web_crawl_tool.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/tools/test_web_search_tool.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/tools/todo_read_tool.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/tools/todo_write_tool.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/tools/web_crawl_tool.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/tools/web_search_tool.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/tools/web_tools_example.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/types.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/variable_holder.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rag/wildcard_sync.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/rags.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/regexproject/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/run_context.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/api.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/async_runner/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/async_runner/async_executor.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/async_runner/async_handler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/async_runner/async_service.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/async_runner/markdown_processor.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/async_runner/task_completion_provider.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/async_runner/task_metadata.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/async_runner/tests/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/async_runner/tests/test_async_service.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/async_runner/worktree_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/cli/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/cli/formatters.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/cli/handlers.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/cli/main.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/cli/options.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/constants.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/core/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/core/auto_coder_core.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/core/bridge.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/exceptions.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/formatters/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/formatters/input.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/formatters/output.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/formatters/stream.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/models/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/models/options.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/models/responses.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/utils/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/utils/formatters.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/utils/io_utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/sdk/utils/validators.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/shadows/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/shadows/shadow_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/suffixproject/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal/app.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal/args.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal/bootstrap.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal/command_processor.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal/command_registry.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal/help.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal/tasks/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal/tasks/background.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal/tasks/task_event.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal/ui/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal/ui/completer.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal/ui/keybindings.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal/ui/session.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal/ui/toolbar.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal/utils/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal/utils/errors.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal/utils/paths.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal/utils/shell.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_core/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_core/cloud_config.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_core/command_registry.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_core/execution_broker.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_core/forward_input.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_core/lifecycle.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_core/status.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_core/task_runtime.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_core/tunnel_worker.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_v3/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_v3/app.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_v3/handlers/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_v3/handlers/command_handler.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_v3/models/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_v3/models/conversation_buffer.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_v3/models/markdown_render.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_v3/models/message.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_v3/models/tool_display.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_v3/ui/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_v3/ui/keybindings.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_v3/ui/layout.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_v3/ui/styles.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/tsproject/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/_markitdown.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/auto_project_type.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/conversation_store.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/llm_client_interceptors.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/llms.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/log_capture.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/math_utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/model_provider_selector.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/multi_turn.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/operate_config_api.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/print_table.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/project_structure.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/queue_communicate.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/request_event_queue.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/request_queue.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/rest.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/stream_thinking.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/thread_utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/utils/types.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/workflow_agents/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/workflow_agents/agent.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/workflow_agents/exceptions.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/workflow_agents/executor.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/workflow_agents/loader.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/workflow_agents/runner.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/workflow_agents/tests/__init__.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/workflow_agents/tests/test_loader.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/workflow_agents/tests/test_types.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/workflow_agents/tests/test_utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/workflow_agents/types.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/workflow_agents/utils.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/workflow_agents/workflow_manager.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/tests/test_args_parser.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/tests/test_command_consistency.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/tests/test_conf_completions.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/tests/test_conf_global_shorthand.py +0 -0
- {auto_coder-3.0.44 → auto_coder-3.0.45}/tests/test_plugin_manager.py +0 -0
|
@@ -805,9 +805,11 @@ src/autocoder/terminal/utils/errors.py
|
|
|
805
805
|
src/autocoder/terminal/utils/paths.py
|
|
806
806
|
src/autocoder/terminal/utils/shell.py
|
|
807
807
|
src/autocoder/terminal_core/__init__.py
|
|
808
|
+
src/autocoder/terminal_core/cloud_block_command.py
|
|
808
809
|
src/autocoder/terminal_core/cloud_bridge.py
|
|
809
810
|
src/autocoder/terminal_core/cloud_command_dispatcher.py
|
|
810
811
|
src/autocoder/terminal_core/cloud_config.py
|
|
812
|
+
src/autocoder/terminal_core/cloud_file_uploader.py
|
|
811
813
|
src/autocoder/terminal_core/command_registry.py
|
|
812
814
|
src/autocoder/terminal_core/execution_broker.py
|
|
813
815
|
src/autocoder/terminal_core/forward_input.py
|
|
@@ -25,11 +25,15 @@ from autocoder.common.result_manager import ResultManager
|
|
|
25
25
|
# 染绿/红,灰色小字显示 ``exit``。命令体输出保持原样(可能已含 ANSI 色),避免
|
|
26
26
|
# 二次解析破坏。
|
|
27
27
|
#
|
|
28
|
-
#
|
|
29
|
-
#
|
|
30
|
-
#
|
|
28
|
+
# 是否启用 Rich 美化由"消费端是否是 TTY/能渲染 ANSI"决定,通过 ``pretty`` 参数
|
|
29
|
+
# 由调用方显式指定:
|
|
30
|
+
# - TUI / 交互式 CLI → pretty=True(默认),产出 ANSI 色码
|
|
31
|
+
# - CloudBridge / Web / 日志文件 → pretty=False,只产出纯文本
|
|
32
|
+
# 另外保留 ``enable_rich_render`` 配置与 ``AUTOCODER_V3_MARKDOWN`` 环境变量作为
|
|
33
|
+
# TUI 侧的用户级总开关(pretty=True 时才生效);pretty=False 一律按纯文本处理,
|
|
34
|
+
# 不受全局配置影响,这样 CloudBridge 链路是确定的。
|
|
31
35
|
def _is_rich_compact_header_enabled() -> bool:
|
|
32
|
-
"""
|
|
36
|
+
"""判断 TUI 侧用户是否把 Rich 关掉了。仅在 ``pretty=True`` 时才查询。
|
|
33
37
|
|
|
34
38
|
- 环境变量优先,便于在不动配置的前提下排查问题
|
|
35
39
|
- memory_manager 没初始化/读失败,一律按 True 处理
|
|
@@ -59,13 +63,27 @@ def _is_rich_compact_header_enabled() -> bool:
|
|
|
59
63
|
return True
|
|
60
64
|
|
|
61
65
|
|
|
62
|
-
def _print_compact_shell_header(
|
|
66
|
+
def _print_compact_shell_header(
|
|
67
|
+
user_command: str, return_code: int, pretty: bool = True
|
|
68
|
+
) -> None:
|
|
63
69
|
"""输出 ``$ <cmd> exit <N>`` 形式的命令头。
|
|
64
70
|
|
|
65
|
-
|
|
66
|
-
|
|
71
|
+
Args:
|
|
72
|
+
user_command: 用户输入的原始命令
|
|
73
|
+
return_code: 进程退出码
|
|
74
|
+
pretty: 消费端是否是 TTY / 能渲染 ANSI。
|
|
75
|
+
- True(默认):TUI/交互式 CLI 场景,产出 Rich 彩色头
|
|
76
|
+
(用户配置关闭时退回朴素灰色 ANSI)
|
|
77
|
+
- False:CloudBridge/Web 等非 TTY 场景,产出纯文本,
|
|
78
|
+
形如 ``$ <cmd> exit <N>``,不含任何转义序列
|
|
67
79
|
"""
|
|
80
|
+
if not pretty:
|
|
81
|
+
# 非 TTY 消费端:确定性纯文本,不读任何配置、不出任何 ANSI
|
|
82
|
+
print(f"$ {user_command} exit {return_code}")
|
|
83
|
+
return
|
|
84
|
+
|
|
68
85
|
if not _is_rich_compact_header_enabled():
|
|
86
|
+
# TTY 消费端但用户关了 Rich:退回手写 ANSI(保持向后兼容)
|
|
69
87
|
print(f"$ {user_command}\033[90m exit {return_code}\033[0m")
|
|
70
88
|
return
|
|
71
89
|
|
|
@@ -99,6 +117,22 @@ def _print_compact_shell_header(user_command: str, return_code: int) -> None:
|
|
|
99
117
|
print(f"$ {user_command}\033[90m exit {return_code}\033[0m")
|
|
100
118
|
|
|
101
119
|
|
|
120
|
+
# pretty=False 时注入给子进程的禁色环境变量。
|
|
121
|
+
# 绝大多数带 TTY 自检的 CLI(cursor-agent、git、pip、npm、cargo、uv、ripgrep、
|
|
122
|
+
# bat、ls、jq 等)都至少识别其中一个,从而在启动时就不产出 ANSI 色码,这样上游
|
|
123
|
+
# 无需再做 strip,性能和保真度都更好。
|
|
124
|
+
_NO_COLOR_ENV: dict[str, str] = {
|
|
125
|
+
"NO_COLOR": "1", # https://no-color.org/ 业界事实标准
|
|
126
|
+
"TERM": "dumb", # 让 readline / curses / rich 判定为非终端
|
|
127
|
+
"FORCE_COLOR": "0", # Node 生态(npm/pnpm/yarn/chalk)
|
|
128
|
+
"CLICOLOR": "0", # BSD ls / macOS ls
|
|
129
|
+
"CLICOLOR_FORCE": "0",
|
|
130
|
+
"PY_COLORS": "0", # pytest / rich 兜底
|
|
131
|
+
"ANSI_COLORS_DISABLED": "1",
|
|
132
|
+
"COLORTERM": "", # 清空防止覆盖 TERM=dumb 判断
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
|
|
102
136
|
def get_terminal_name() -> str:
|
|
103
137
|
"""
|
|
104
138
|
获取当前终端名称(自动适配 Windows/Linux/Mac)
|
|
@@ -463,6 +497,7 @@ def execute_shell_command(
|
|
|
463
497
|
command: str,
|
|
464
498
|
compact_output: bool = False,
|
|
465
499
|
cancel_token: Optional[str] = None,
|
|
500
|
+
pretty: bool = True,
|
|
466
501
|
):
|
|
467
502
|
"""
|
|
468
503
|
Execute a shell command with cross-platform encoding support and streaming output.
|
|
@@ -474,6 +509,13 @@ def execute_shell_command(
|
|
|
474
509
|
no "Output streaming" banner). Used by terminal V3 ``!`` prefix.
|
|
475
510
|
cancel_token: If provided, register an on_cancel callback to kill the
|
|
476
511
|
subprocess when the token is cancelled.
|
|
512
|
+
pretty: 消费端是否能渲染 ANSI / 是否是 TTY。
|
|
513
|
+
- ``True``(默认):TUI、交互式 CLI 等场景,允许 Rich 输出彩色命令头,
|
|
514
|
+
同时保留子进程原生输出(可能带 ANSI 色)
|
|
515
|
+
- ``False``:CloudBridge、Web、日志采集等非 TTY 场景,命令头降级为
|
|
516
|
+
纯文本,并给子进程注入 ``NO_COLOR=1`` / ``TERM=dumb`` /
|
|
517
|
+
``FORCE_COLOR=0`` 等环境变量,让绝大多数 CLI 工具(cursor-agent、
|
|
518
|
+
git、pip、npm 等)主动以纯文本输出,避免 ANSI 色码污染下游。
|
|
477
519
|
"""
|
|
478
520
|
user_command = command
|
|
479
521
|
console = Console()
|
|
@@ -548,6 +590,11 @@ set PYTHONIOENCODING=utf-8
|
|
|
548
590
|
env["GIT_PAGER"] = "cat"
|
|
549
591
|
env["GIT_TERMINAL_PROMPT"] = "0"
|
|
550
592
|
|
|
593
|
+
# 非 TTY 消费端:显式告知子进程禁用 ANSI 色码。这样 cursor-agent、git 等
|
|
594
|
+
# CLI 启动时就不会输出彩色,从源头避免污染 CloudBridge / Web 等下游。
|
|
595
|
+
if not pretty:
|
|
596
|
+
env.update(_NO_COLOR_ENV)
|
|
597
|
+
|
|
551
598
|
process = subprocess.Popen(
|
|
552
599
|
command,
|
|
553
600
|
stdin=subprocess.DEVNULL,
|
|
@@ -594,7 +641,7 @@ set PYTHONIOENCODING=utf-8
|
|
|
594
641
|
"return_code": return_code,
|
|
595
642
|
},
|
|
596
643
|
)
|
|
597
|
-
_print_compact_shell_header(user_command, return_code)
|
|
644
|
+
_print_compact_shell_header(user_command, return_code, pretty=pretty)
|
|
598
645
|
if merged:
|
|
599
646
|
print(merged)
|
|
600
647
|
return
|
|
@@ -704,7 +751,7 @@ set PYTHONIOENCODING=utf-8
|
|
|
704
751
|
},
|
|
705
752
|
)
|
|
706
753
|
if compact_output:
|
|
707
|
-
_print_compact_shell_header(user_command, 127)
|
|
754
|
+
_print_compact_shell_header(user_command, 127, pretty=pretty)
|
|
708
755
|
print(f"Command not found: {user_command}")
|
|
709
756
|
else:
|
|
710
757
|
console.print(
|
|
@@ -721,7 +768,7 @@ set PYTHONIOENCODING=utf-8
|
|
|
721
768
|
},
|
|
722
769
|
)
|
|
723
770
|
if compact_output:
|
|
724
|
-
_print_compact_shell_header(user_command, 1)
|
|
771
|
+
_print_compact_shell_header(user_command, 1, pretty=pretty)
|
|
725
772
|
print(str(e))
|
|
726
773
|
else:
|
|
727
774
|
console.print(
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Block command parser and registry for `#[cmd] args` syntax.
|
|
3
|
+
|
|
4
|
+
This module provides the foundation for structured remote primitives
|
|
5
|
+
that the Dashboard can invoke on CLI instances. Each block command
|
|
6
|
+
is identified by `#[<identifier>]` followed by optional arguments.
|
|
7
|
+
|
|
8
|
+
Examples:
|
|
9
|
+
#[file_read] README.md
|
|
10
|
+
#[ls] src/
|
|
11
|
+
#[grep] pattern *.py
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import re
|
|
15
|
+
from dataclasses import dataclass, field
|
|
16
|
+
from typing import Any, Callable, Dict, List, Optional, TYPE_CHECKING
|
|
17
|
+
|
|
18
|
+
if TYPE_CHECKING:
|
|
19
|
+
from autocoder.terminal_core.cloud_file_uploader import CloudFileUploader
|
|
20
|
+
|
|
21
|
+
BLOCK_COMMAND_RE = re.compile(
|
|
22
|
+
r"^#\[([A-Za-z_][A-Za-z0-9_]*)\](?:\s+(.*))?$", re.DOTALL
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@dataclass
|
|
27
|
+
class ParsedBlockCommand:
|
|
28
|
+
cmd: str
|
|
29
|
+
args: str
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def parse_block_command(prompt_text: str) -> Optional[ParsedBlockCommand]:
|
|
33
|
+
"""Parse ``#[cmd] args`` from the start of *prompt_text*.
|
|
34
|
+
|
|
35
|
+
Returns ``None`` when the text does not match the block-command syntax.
|
|
36
|
+
"""
|
|
37
|
+
text = prompt_text.strip()
|
|
38
|
+
m = BLOCK_COMMAND_RE.match(text)
|
|
39
|
+
if not m:
|
|
40
|
+
return None
|
|
41
|
+
return ParsedBlockCommand(cmd=m.group(1), args=(m.group(2) or "").strip())
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@dataclass
|
|
45
|
+
class CommandOutcome:
|
|
46
|
+
"""Unified result container for block-command handlers.
|
|
47
|
+
|
|
48
|
+
*text* – human-readable summary (written to ``resultText``)
|
|
49
|
+
*payload* – structured data (merged into ``resultPayloads``)
|
|
50
|
+
*files* – IDs of files already uploaded & registered via the uploader
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
text: str = ""
|
|
54
|
+
payload: Dict[str, Any] = field(default_factory=dict)
|
|
55
|
+
files: List[str] = field(default_factory=list)
|
|
56
|
+
|
|
57
|
+
@classmethod
|
|
58
|
+
def text_only(cls, s: str) -> "CommandOutcome":
|
|
59
|
+
return cls(text=s)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
@dataclass
|
|
63
|
+
class CommandContext:
|
|
64
|
+
"""Runtime context passed to block-command handlers."""
|
|
65
|
+
|
|
66
|
+
run_id: str
|
|
67
|
+
uploader: Optional["CloudFileUploader"] = None
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
BlockHandler = Callable[..., CommandOutcome]
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
class BlockCommandRegistry:
|
|
74
|
+
"""Registry of ``#[cmd]`` handlers."""
|
|
75
|
+
|
|
76
|
+
def __init__(self) -> None:
|
|
77
|
+
self._handlers: Dict[str, BlockHandler] = {}
|
|
78
|
+
|
|
79
|
+
def register(self, cmd: str, handler: BlockHandler) -> None:
|
|
80
|
+
self._handlers[cmd] = handler
|
|
81
|
+
|
|
82
|
+
def has(self, cmd: str) -> bool:
|
|
83
|
+
return cmd in self._handlers
|
|
84
|
+
|
|
85
|
+
def get(self, cmd: str) -> Optional[BlockHandler]:
|
|
86
|
+
return self._handlers.get(cmd)
|
|
@@ -456,6 +456,7 @@ class CloudBridge:
|
|
|
456
456
|
result_text: Optional[str] = None,
|
|
457
457
|
error_text: Optional[str] = None,
|
|
458
458
|
usage_details: Optional[List[Dict[str, Any]]] = None,
|
|
459
|
+
result_payloads: Optional[Dict[str, Any]] = None,
|
|
459
460
|
):
|
|
460
461
|
body: Dict[str, Any] = {"status": status}
|
|
461
462
|
if result_text is not None:
|
|
@@ -464,6 +465,8 @@ class CloudBridge:
|
|
|
464
465
|
body["errorText"] = error_text
|
|
465
466
|
if usage_details:
|
|
466
467
|
body["usageDetails"] = usage_details
|
|
468
|
+
if result_payloads:
|
|
469
|
+
body["resultPayloads"] = result_payloads
|
|
467
470
|
try:
|
|
468
471
|
await asyncio.get_event_loop().run_in_executor(
|
|
469
472
|
None,
|
|
@@ -685,17 +688,29 @@ class CloudBridge:
|
|
|
685
688
|
self._run_cancel_tokens.pop(run.id, None)
|
|
686
689
|
|
|
687
690
|
async def _process_command_run(self, run: PendingRun, cancel_token: Optional[str] = None):
|
|
688
|
-
"""处理斜杠命令类型的 run(如 /commit),在线程池中执行后回传结果。"""
|
|
691
|
+
"""处理斜杠命令类型的 run(如 /commit、#[file_read]),在线程池中执行后回传结果。"""
|
|
689
692
|
cancel_token = cancel_token or f"cloud-run-{run.id}"
|
|
690
693
|
global_cancel.register_token(cancel_token)
|
|
691
694
|
self._run_cancel_tokens[run.id] = cancel_token
|
|
692
695
|
|
|
693
696
|
try:
|
|
697
|
+
from autocoder.terminal_core.cloud_block_command import CommandContext
|
|
698
|
+
from autocoder.terminal_core.cloud_file_uploader import CloudFileUploader
|
|
699
|
+
|
|
700
|
+
ctx = CommandContext(
|
|
701
|
+
run_id=run.id,
|
|
702
|
+
uploader=CloudFileUploader(
|
|
703
|
+
session=self._session,
|
|
704
|
+
base_url=self._config.base_url,
|
|
705
|
+
run_id=run.id,
|
|
706
|
+
),
|
|
707
|
+
)
|
|
708
|
+
|
|
694
709
|
loop = asyncio.get_event_loop()
|
|
695
710
|
cmd_result = await loop.run_in_executor(
|
|
696
711
|
None,
|
|
697
712
|
lambda: self._command_dispatcher.dispatch(
|
|
698
|
-
run.prompt_text, cancel_token=cancel_token
|
|
713
|
+
run.prompt_text, cancel_token=cancel_token, context=ctx
|
|
699
714
|
),
|
|
700
715
|
)
|
|
701
716
|
if global_cancel.is_requested(cancel_token):
|
|
@@ -705,8 +720,12 @@ class CloudBridge:
|
|
|
705
720
|
run.id, "FAILED", error_text=cmd_result.error_text
|
|
706
721
|
)
|
|
707
722
|
else:
|
|
723
|
+
outcome = cmd_result.outcome
|
|
708
724
|
await self._report_result(
|
|
709
|
-
run.id,
|
|
725
|
+
run.id,
|
|
726
|
+
"COMPLETED",
|
|
727
|
+
result_text=cmd_result.result_text or "",
|
|
728
|
+
result_payloads=outcome.payload if outcome and outcome.payload else None,
|
|
710
729
|
)
|
|
711
730
|
except Exception as e:
|
|
712
731
|
logger.error(f"CloudBridge command run {run.id} failed: {e}")
|
{auto_coder-3.0.44 → auto_coder-3.0.45}/src/autocoder/terminal_core/cloud_command_dispatcher.py
RENAMED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"""
|
|
2
2
|
CloudCommandDispatcher - 云端命令分发器
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
可扩展的命令处理器,用于处理从云端下发的 /commit、!shell、$workflow
|
|
5
|
+
以及 #[cmd] 块指令等命令。新增命令只需注册一个 handler 即可。
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- args:
|
|
9
|
-
-
|
|
7
|
+
handler 签名:
|
|
8
|
+
- 斜杠/前缀命令: (args: str, **kwargs) -> str
|
|
9
|
+
- 块指令: (args: str, *, cancel_token, context) -> CommandOutcome
|
|
10
10
|
"""
|
|
11
11
|
|
|
12
12
|
import json
|
|
@@ -17,6 +17,13 @@ from typing import Any, Callable, Dict, Optional
|
|
|
17
17
|
|
|
18
18
|
from loguru import logger
|
|
19
19
|
|
|
20
|
+
from autocoder.terminal_core.cloud_block_command import (
|
|
21
|
+
BlockCommandRegistry,
|
|
22
|
+
CommandContext,
|
|
23
|
+
CommandOutcome,
|
|
24
|
+
parse_block_command,
|
|
25
|
+
)
|
|
26
|
+
|
|
20
27
|
|
|
21
28
|
CommandHandler = Callable[..., str]
|
|
22
29
|
|
|
@@ -26,6 +33,7 @@ class CommandResult:
|
|
|
26
33
|
handled: bool
|
|
27
34
|
result_text: str = ""
|
|
28
35
|
error_text: str = ""
|
|
36
|
+
outcome: Optional[CommandOutcome] = None
|
|
29
37
|
|
|
30
38
|
|
|
31
39
|
class CloudCommandDispatcher:
|
|
@@ -45,6 +53,7 @@ class CloudCommandDispatcher:
|
|
|
45
53
|
def __init__(self):
|
|
46
54
|
self._handlers: Dict[str, CommandHandler] = {}
|
|
47
55
|
self._prefix_handlers: Dict[str, CommandHandler] = {}
|
|
56
|
+
self._block_registry = BlockCommandRegistry()
|
|
48
57
|
|
|
49
58
|
def register(self, command: str, handler: CommandHandler) -> None:
|
|
50
59
|
self._handlers[command] = handler
|
|
@@ -53,6 +62,10 @@ class CloudCommandDispatcher:
|
|
|
53
62
|
"""注册前缀命令(如 '!' 和 '$'),整条文本去掉前缀后作为 args。"""
|
|
54
63
|
self._prefix_handlers[prefix] = handler
|
|
55
64
|
|
|
65
|
+
def register_block(self, cmd: str, handler: Any) -> None:
|
|
66
|
+
"""注册 ``#[cmd]`` 块指令 handler。"""
|
|
67
|
+
self._block_registry.register(cmd, handler)
|
|
68
|
+
|
|
56
69
|
def unregister(self, command: str) -> None:
|
|
57
70
|
self._handlers.pop(command, None)
|
|
58
71
|
self._prefix_handlers.pop(command, None)
|
|
@@ -63,6 +76,10 @@ class CloudCommandDispatcher:
|
|
|
63
76
|
|
|
64
77
|
def is_command(self, prompt_text: str) -> bool:
|
|
65
78
|
text = prompt_text.strip()
|
|
79
|
+
# Block commands: #[cmd] args
|
|
80
|
+
parsed = parse_block_command(text)
|
|
81
|
+
if parsed is not None and self._block_registry.has(parsed.cmd):
|
|
82
|
+
return True
|
|
66
83
|
for prefix in self._prefix_handlers:
|
|
67
84
|
if text.startswith(prefix):
|
|
68
85
|
return True
|
|
@@ -72,17 +89,45 @@ class CloudCommandDispatcher:
|
|
|
72
89
|
return cmd_word in self._handlers
|
|
73
90
|
|
|
74
91
|
def dispatch(
|
|
75
|
-
self,
|
|
92
|
+
self,
|
|
93
|
+
prompt_text: str,
|
|
94
|
+
cancel_token: Optional[str] = None,
|
|
95
|
+
context: Optional[CommandContext] = None,
|
|
76
96
|
) -> CommandResult:
|
|
77
97
|
text = prompt_text.strip()
|
|
78
98
|
|
|
99
|
+
# Block commands take priority: #[cmd] args
|
|
100
|
+
parsed = parse_block_command(text)
|
|
101
|
+
if parsed is not None:
|
|
102
|
+
handler = self._block_registry.get(parsed.cmd)
|
|
103
|
+
if handler is not None:
|
|
104
|
+
logger.info(f"CloudCommandDispatcher: executing block #{parsed.cmd}")
|
|
105
|
+
try:
|
|
106
|
+
outcome = handler(
|
|
107
|
+
parsed.args,
|
|
108
|
+
cancel_token=cancel_token,
|
|
109
|
+
context=context,
|
|
110
|
+
)
|
|
111
|
+
return CommandResult(
|
|
112
|
+
handled=True,
|
|
113
|
+
result_text=outcome.text,
|
|
114
|
+
outcome=outcome,
|
|
115
|
+
)
|
|
116
|
+
except Exception as e:
|
|
117
|
+
logger.error(f"CloudCommandDispatcher: block #{parsed.cmd} failed: {e}")
|
|
118
|
+
return CommandResult(handled=True, error_text=str(e))
|
|
119
|
+
|
|
79
120
|
for prefix, handler in self._prefix_handlers.items():
|
|
80
121
|
if text.startswith(prefix):
|
|
81
122
|
args = text[len(prefix):].strip()
|
|
82
123
|
logger.info(f"CloudCommandDispatcher: executing prefix '{prefix}'")
|
|
83
124
|
try:
|
|
84
125
|
result_text = handler(args, cancel_token=cancel_token)
|
|
85
|
-
return CommandResult(
|
|
126
|
+
return CommandResult(
|
|
127
|
+
handled=True,
|
|
128
|
+
result_text=result_text,
|
|
129
|
+
outcome=CommandOutcome.text_only(result_text),
|
|
130
|
+
)
|
|
86
131
|
except Exception as e:
|
|
87
132
|
logger.error(f"CloudCommandDispatcher: prefix '{prefix}' failed: {e}")
|
|
88
133
|
return CommandResult(handled=True, error_text=str(e))
|
|
@@ -101,7 +146,11 @@ class CloudCommandDispatcher:
|
|
|
101
146
|
logger.info(f"CloudCommandDispatcher: executing {cmd_word}")
|
|
102
147
|
try:
|
|
103
148
|
result_text = handler(args)
|
|
104
|
-
return CommandResult(
|
|
149
|
+
return CommandResult(
|
|
150
|
+
handled=True,
|
|
151
|
+
result_text=result_text,
|
|
152
|
+
outcome=CommandOutcome.text_only(result_text),
|
|
153
|
+
)
|
|
105
154
|
except Exception as e:
|
|
106
155
|
logger.error(f"CloudCommandDispatcher: {cmd_word} failed: {e}")
|
|
107
156
|
return CommandResult(handled=True, error_text=str(e))
|
|
@@ -114,6 +163,7 @@ class CloudCommandDispatcher:
|
|
|
114
163
|
self.register("/tunnel", _handle_tunnel)
|
|
115
164
|
self.register_prefix("!", _handle_shell)
|
|
116
165
|
self.register_prefix("$", _handle_workflow_shortcut)
|
|
166
|
+
self.register_block("file_read", _handle_file_read)
|
|
117
167
|
|
|
118
168
|
|
|
119
169
|
def _load_cloud_connection_config() -> tuple[str, str]:
|
|
@@ -961,3 +1011,44 @@ def _handle_tunnel(args: str) -> str:
|
|
|
961
1011
|
" /tunnel stop <tunnel_id>\n"
|
|
962
1012
|
" /tunnel list"
|
|
963
1013
|
)
|
|
1014
|
+
|
|
1015
|
+
|
|
1016
|
+
# ── #[file_read] ─────────────────────────────────────────
|
|
1017
|
+
|
|
1018
|
+
|
|
1019
|
+
def _handle_file_read(
|
|
1020
|
+
args: str,
|
|
1021
|
+
*,
|
|
1022
|
+
cancel_token: Optional[str] = None,
|
|
1023
|
+
context: Optional[CommandContext] = None,
|
|
1024
|
+
) -> CommandOutcome:
|
|
1025
|
+
"""Handle ``#[file_read] <path>``: read a local file and upload it."""
|
|
1026
|
+
if not args:
|
|
1027
|
+
return CommandOutcome.text_only("Usage: #[file_read] <path>")
|
|
1028
|
+
if context is None or context.uploader is None:
|
|
1029
|
+
return CommandOutcome.text_only(
|
|
1030
|
+
"File read requires cloud context (not available in this environment)."
|
|
1031
|
+
)
|
|
1032
|
+
path = args.strip()
|
|
1033
|
+
if not os.path.exists(path):
|
|
1034
|
+
return CommandOutcome.text_only(f"File not found: {path}")
|
|
1035
|
+
if not os.path.isfile(path):
|
|
1036
|
+
return CommandOutcome.text_only(f"Not a file: {path}")
|
|
1037
|
+
try:
|
|
1038
|
+
uploaded = context.uploader.upload(path)
|
|
1039
|
+
return CommandOutcome(
|
|
1040
|
+
text=f"File uploaded: {uploaded.original_name} ({uploaded.size_bytes} bytes)",
|
|
1041
|
+
payload={
|
|
1042
|
+
"result_type": "file_read",
|
|
1043
|
+
"source_path": path,
|
|
1044
|
+
"uploaded": {
|
|
1045
|
+
"id": uploaded.id,
|
|
1046
|
+
"original_name": uploaded.original_name,
|
|
1047
|
+
"size_bytes": uploaded.size_bytes,
|
|
1048
|
+
"content_type": uploaded.content_type,
|
|
1049
|
+
},
|
|
1050
|
+
},
|
|
1051
|
+
files=[uploaded.id],
|
|
1052
|
+
)
|
|
1053
|
+
except Exception as e:
|
|
1054
|
+
return CommandOutcome.text_only(f"Upload failed: {e}")
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"""
|
|
2
|
+
CloudFileUploader – upload local files to auto-coder.chat cloud storage.
|
|
3
|
+
|
|
4
|
+
Three-step protocol per file:
|
|
5
|
+
1. POST /api/client/runs/{id}/uploads/init → validate & get mode
|
|
6
|
+
2. POST /api/client/runs/{id}/uploads/proxy → multipart upload (server proxies to blob)
|
|
7
|
+
3. POST /api/client/runs/{id}/files → register LiteRunFile record(s)
|
|
8
|
+
|
|
9
|
+
Step 3 supports batch registration (multiple files in one call).
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
import mimetypes
|
|
13
|
+
import os
|
|
14
|
+
from dataclasses import dataclass
|
|
15
|
+
from typing import Any, Dict, List
|
|
16
|
+
|
|
17
|
+
from loguru import logger
|
|
18
|
+
from requests import Session
|
|
19
|
+
|
|
20
|
+
MAX_UPLOAD_SIZE = 10 * 1024 * 1024 # 10 MB – must match server-side limit
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@dataclass
|
|
24
|
+
class UploadedFile:
|
|
25
|
+
id: str
|
|
26
|
+
original_name: str
|
|
27
|
+
size_bytes: int
|
|
28
|
+
content_type: str
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class CloudFileUploader:
|
|
32
|
+
def __init__(self, session: Session, base_url: str, run_id: str) -> None:
|
|
33
|
+
self._session = session
|
|
34
|
+
self._base_url = base_url.rstrip("/")
|
|
35
|
+
self._run_id = run_id
|
|
36
|
+
|
|
37
|
+
def _url(self, path: str) -> str:
|
|
38
|
+
return f"{self._base_url}{path}"
|
|
39
|
+
|
|
40
|
+
# ------------------------------------------------------------------
|
|
41
|
+
# Public API
|
|
42
|
+
# ------------------------------------------------------------------
|
|
43
|
+
|
|
44
|
+
def upload(self, file_path: str) -> UploadedFile:
|
|
45
|
+
"""Upload a single file and register it."""
|
|
46
|
+
return self.upload_batch([file_path])[0]
|
|
47
|
+
|
|
48
|
+
def upload_batch(self, file_paths: List[str]) -> List[UploadedFile]:
|
|
49
|
+
"""Upload multiple files (init + proxy each), then batch-register."""
|
|
50
|
+
stored: List[Dict[str, Any]] = []
|
|
51
|
+
for p in file_paths:
|
|
52
|
+
meta = self._upload_one(p)
|
|
53
|
+
stored.append(meta)
|
|
54
|
+
|
|
55
|
+
resp = self._session.post(
|
|
56
|
+
self._url(f"/api/client/runs/{self._run_id}/files"),
|
|
57
|
+
json={"files": stored},
|
|
58
|
+
)
|
|
59
|
+
resp.raise_for_status()
|
|
60
|
+
data = resp.json().get("files", [])
|
|
61
|
+
return [
|
|
62
|
+
UploadedFile(
|
|
63
|
+
id=f["id"],
|
|
64
|
+
original_name=f["originalName"],
|
|
65
|
+
size_bytes=f["sizeBytes"],
|
|
66
|
+
content_type=f["contentType"],
|
|
67
|
+
)
|
|
68
|
+
for f in data
|
|
69
|
+
]
|
|
70
|
+
|
|
71
|
+
# ------------------------------------------------------------------
|
|
72
|
+
# Internal
|
|
73
|
+
# ------------------------------------------------------------------
|
|
74
|
+
|
|
75
|
+
def _upload_one(self, path: str) -> Dict[str, Any]:
|
|
76
|
+
size = os.path.getsize(path)
|
|
77
|
+
if size > MAX_UPLOAD_SIZE:
|
|
78
|
+
raise ValueError(
|
|
79
|
+
f"File too large ({size} bytes, limit {MAX_UPLOAD_SIZE}): {path}"
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
filename = os.path.basename(path)
|
|
83
|
+
content_type, _ = mimetypes.guess_type(path)
|
|
84
|
+
content_type = content_type or "application/octet-stream"
|
|
85
|
+
|
|
86
|
+
logger.info(
|
|
87
|
+
f"CloudFileUploader: uploading {filename} "
|
|
88
|
+
f"({size} bytes, {content_type})"
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
# 1. init
|
|
92
|
+
init_resp = self._session.post(
|
|
93
|
+
self._url(f"/api/client/runs/{self._run_id}/uploads/init"),
|
|
94
|
+
json={
|
|
95
|
+
"filename": filename,
|
|
96
|
+
"contentType": content_type,
|
|
97
|
+
"sizeBytes": size,
|
|
98
|
+
},
|
|
99
|
+
)
|
|
100
|
+
init_resp.raise_for_status()
|
|
101
|
+
|
|
102
|
+
# 2. proxy upload (multipart)
|
|
103
|
+
# Session-level headers carry Content-Type: application/json. When
|
|
104
|
+
# we call session.post(..., files=...), `requests` MERGES call-level
|
|
105
|
+
# headers with session headers, so a Content-Type already set on the
|
|
106
|
+
# session is kept and `files=` never gets a chance to inject its
|
|
107
|
+
# own `multipart/form-data; boundary=...` header — the request goes
|
|
108
|
+
# out as application/json and the server rejects the multipart parse.
|
|
109
|
+
#
|
|
110
|
+
# The documented way to drop a session-level header for a single call
|
|
111
|
+
# is to pass the key with value `None` at call level:
|
|
112
|
+
# https://requests.readthedocs.io/en/master/user/advanced/
|
|
113
|
+
# ("Sometimes you'll want to omit session-level keys ... set that
|
|
114
|
+
# key's value to None in the method-level parameter.")
|
|
115
|
+
with open(path, "rb") as f:
|
|
116
|
+
proxy_resp = self._session.post(
|
|
117
|
+
self._url(f"/api/client/runs/{self._run_id}/uploads/proxy"),
|
|
118
|
+
files={"file": (filename, f, content_type)},
|
|
119
|
+
headers={"Content-Type": None},
|
|
120
|
+
)
|
|
121
|
+
proxy_resp.raise_for_status()
|
|
122
|
+
return proxy_resp.json()
|