auto-coder 1.0.0__py3-none-any.whl → 2.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of auto-coder might be problematic. Click here for more details.

Files changed (574) hide show
  1. auto_coder-2.0.0.dist-info/LICENSE +158 -0
  2. auto_coder-2.0.0.dist-info/METADATA +558 -0
  3. auto_coder-2.0.0.dist-info/RECORD +795 -0
  4. {auto_coder-1.0.0.dist-info → auto_coder-2.0.0.dist-info}/WHEEL +1 -1
  5. {auto_coder-1.0.0.dist-info → auto_coder-2.0.0.dist-info}/entry_points.txt +3 -3
  6. autocoder/__init__.py +31 -0
  7. autocoder/agent/auto_filegroup.py +32 -13
  8. autocoder/agent/auto_learn_from_commit.py +9 -1
  9. autocoder/agent/base_agentic/__init__.py +3 -0
  10. autocoder/agent/base_agentic/agent_hub.py +1 -1
  11. autocoder/agent/base_agentic/base_agent.py +235 -136
  12. autocoder/agent/base_agentic/default_tools.py +119 -118
  13. autocoder/agent/base_agentic/test_base_agent.py +1 -1
  14. autocoder/agent/base_agentic/tool_registry.py +32 -20
  15. autocoder/agent/base_agentic/tools/read_file_tool_resolver.py +24 -3
  16. autocoder/agent/base_agentic/tools/write_to_file_tool_resolver.py +24 -11
  17. autocoder/agent/base_agentic/types.py +42 -0
  18. autocoder/agent/entry_command_agent/chat.py +73 -59
  19. autocoder/auto_coder.py +31 -40
  20. autocoder/auto_coder_rag.py +11 -1084
  21. autocoder/auto_coder_runner.py +970 -2345
  22. autocoder/auto_coder_terminal.py +26 -0
  23. autocoder/auto_coder_terminal_v3.py +190 -0
  24. autocoder/chat/conf_command.py +224 -124
  25. autocoder/chat/models_command.py +361 -299
  26. autocoder/chat/rules_command.py +79 -31
  27. autocoder/chat_auto_coder.py +988 -398
  28. autocoder/chat_auto_coder_lang.py +23 -732
  29. autocoder/commands/auto_command.py +25 -8
  30. autocoder/commands/auto_web.py +1 -1
  31. autocoder/commands/tools.py +44 -44
  32. autocoder/common/__init__.py +150 -128
  33. autocoder/common/ac_style_command_parser/__init__.py +39 -2
  34. autocoder/common/ac_style_command_parser/config.py +422 -0
  35. autocoder/common/ac_style_command_parser/parser.py +292 -78
  36. autocoder/common/ac_style_command_parser/test_parser.py +241 -16
  37. autocoder/common/ac_style_command_parser/test_typed_parser.py +342 -0
  38. autocoder/common/ac_style_command_parser/typed_parser.py +653 -0
  39. autocoder/common/action_yml_file_manager.py +25 -13
  40. autocoder/common/agent_events/__init__.py +52 -0
  41. autocoder/common/agent_events/agent_event_emitter.py +193 -0
  42. autocoder/common/agent_events/event_factory.py +177 -0
  43. autocoder/common/agent_events/examples.py +307 -0
  44. autocoder/common/agent_events/types.py +113 -0
  45. autocoder/common/agent_events/utils.py +68 -0
  46. autocoder/common/agent_hooks/__init__.py +44 -0
  47. autocoder/common/agent_hooks/examples.py +582 -0
  48. autocoder/common/agent_hooks/hook_executor.py +217 -0
  49. autocoder/common/agent_hooks/hook_manager.py +288 -0
  50. autocoder/common/agent_hooks/types.py +133 -0
  51. autocoder/common/agent_hooks/utils.py +99 -0
  52. autocoder/common/agent_query_queue/queue_executor.py +324 -0
  53. autocoder/common/agent_query_queue/queue_manager.py +325 -0
  54. autocoder/common/agents/__init__.py +11 -0
  55. autocoder/common/agents/agent_manager.py +323 -0
  56. autocoder/common/agents/agent_parser.py +189 -0
  57. autocoder/common/agents/example_usage.py +344 -0
  58. autocoder/common/agents/integration_example.py +330 -0
  59. autocoder/common/agents/test_agent_parser.py +545 -0
  60. autocoder/common/async_utils.py +101 -0
  61. autocoder/common/auto_coder_lang.py +23 -972
  62. autocoder/common/autocoderargs_parser/__init__.py +14 -0
  63. autocoder/common/autocoderargs_parser/parser.py +184 -0
  64. autocoder/common/autocoderargs_parser/tests/__init__.py +1 -0
  65. autocoder/common/autocoderargs_parser/tests/test_args_parser.py +235 -0
  66. autocoder/common/autocoderargs_parser/tests/test_token_parser.py +195 -0
  67. autocoder/common/autocoderargs_parser/token_parser.py +290 -0
  68. autocoder/common/buildin_tokenizer.py +2 -4
  69. autocoder/common/code_auto_generate.py +149 -74
  70. autocoder/common/code_auto_generate_diff.py +163 -70
  71. autocoder/common/code_auto_generate_editblock.py +179 -89
  72. autocoder/common/code_auto_generate_strict_diff.py +167 -72
  73. autocoder/common/code_auto_merge_editblock.py +13 -6
  74. autocoder/common/code_modification_ranker.py +1 -1
  75. autocoder/common/command_completer.py +3 -3
  76. autocoder/common/command_file_manager/manager.py +183 -47
  77. autocoder/common/command_file_manager/test_command_file_manager.py +507 -0
  78. autocoder/common/command_templates.py +1 -1
  79. autocoder/common/conf_utils.py +2 -4
  80. autocoder/common/conversations/config.py +11 -3
  81. autocoder/common/conversations/get_conversation_manager.py +100 -2
  82. autocoder/common/conversations/llm_stats_models.py +264 -0
  83. autocoder/common/conversations/manager.py +112 -28
  84. autocoder/common/conversations/models.py +16 -2
  85. autocoder/common/conversations/storage/index_manager.py +134 -10
  86. autocoder/common/core_config/__init__.py +63 -0
  87. autocoder/common/core_config/agentic_mode_manager.py +109 -0
  88. autocoder/common/core_config/base_manager.py +123 -0
  89. autocoder/common/core_config/compatibility.py +151 -0
  90. autocoder/common/core_config/config_manager.py +156 -0
  91. autocoder/common/core_config/conversation_manager.py +31 -0
  92. autocoder/common/core_config/exclude_manager.py +72 -0
  93. autocoder/common/core_config/file_manager.py +177 -0
  94. autocoder/common/core_config/human_as_model_manager.py +129 -0
  95. autocoder/common/core_config/lib_manager.py +54 -0
  96. autocoder/common/core_config/main_manager.py +81 -0
  97. autocoder/common/core_config/mode_manager.py +126 -0
  98. autocoder/common/core_config/models.py +70 -0
  99. autocoder/common/core_config/test_memory_manager.py +1056 -0
  100. autocoder/common/env_manager.py +282 -0
  101. autocoder/common/env_manager_usage_example.py +211 -0
  102. autocoder/common/file_checkpoint/conversation_checkpoint.py +19 -19
  103. autocoder/common/file_checkpoint/manager.py +264 -48
  104. autocoder/common/file_checkpoint/test_backup.py +1 -18
  105. autocoder/common/file_checkpoint/test_manager.py +270 -1
  106. autocoder/common/file_checkpoint/test_store.py +1 -17
  107. autocoder/common/file_handler/__init__.py +23 -0
  108. autocoder/common/file_handler/active_context_handler.py +159 -0
  109. autocoder/common/file_handler/add_files_handler.py +409 -0
  110. autocoder/common/file_handler/chat_handler.py +180 -0
  111. autocoder/common/file_handler/coding_handler.py +401 -0
  112. autocoder/common/file_handler/commit_handler.py +200 -0
  113. autocoder/common/file_handler/lib_handler.py +156 -0
  114. autocoder/common/file_handler/list_files_handler.py +111 -0
  115. autocoder/common/file_handler/mcp_handler.py +268 -0
  116. autocoder/common/file_handler/models_handler.py +493 -0
  117. autocoder/common/file_handler/remove_files_handler.py +172 -0
  118. autocoder/common/git_utils.py +44 -8
  119. autocoder/common/global_cancel.py +15 -6
  120. autocoder/common/ignorefiles/test_ignore_file_utils.py +1 -1
  121. autocoder/common/international/__init__.py +31 -0
  122. autocoder/common/international/demo_international.py +92 -0
  123. autocoder/common/international/message_manager.py +157 -0
  124. autocoder/common/international/messages/__init__.py +56 -0
  125. autocoder/common/international/messages/async_command_messages.py +507 -0
  126. autocoder/common/international/messages/auto_coder_messages.py +2208 -0
  127. autocoder/common/international/messages/chat_auto_coder_messages.py +1547 -0
  128. autocoder/common/international/messages/command_help_messages.py +986 -0
  129. autocoder/common/international/messages/conversation_command_messages.py +191 -0
  130. autocoder/common/international/messages/git_helper_plugin_messages.py +159 -0
  131. autocoder/common/international/messages/queue_command_messages.py +751 -0
  132. autocoder/common/international/messages/rules_command_messages.py +77 -0
  133. autocoder/common/international/messages/sdk_messages.py +1707 -0
  134. autocoder/common/international/messages/token_helper_plugin_messages.py +361 -0
  135. autocoder/common/international/messages/tool_display_messages.py +1212 -0
  136. autocoder/common/international/messages/workflow_exception_messages.py +473 -0
  137. autocoder/common/international/test_international.py +612 -0
  138. autocoder/common/linter_core/__init__.py +28 -0
  139. autocoder/common/linter_core/base_linter.py +61 -0
  140. autocoder/common/linter_core/config_loader.py +271 -0
  141. autocoder/common/linter_core/formatters/__init__.py +0 -0
  142. autocoder/common/linter_core/formatters/base_formatter.py +38 -0
  143. autocoder/common/linter_core/formatters/raw_formatter.py +17 -0
  144. autocoder/common/linter_core/linter.py +166 -0
  145. autocoder/common/linter_core/linter_factory.py +216 -0
  146. autocoder/common/linter_core/linter_manager.py +333 -0
  147. autocoder/common/linter_core/linters/__init__.py +9 -0
  148. autocoder/common/linter_core/linters/java_linter.py +342 -0
  149. autocoder/common/linter_core/linters/python_linter.py +115 -0
  150. autocoder/common/linter_core/linters/typescript_linter.py +119 -0
  151. autocoder/common/linter_core/models/__init__.py +7 -0
  152. autocoder/common/linter_core/models/lint_result.py +91 -0
  153. autocoder/common/linter_core/models.py +33 -0
  154. autocoder/common/linter_core/tests/__init__.py +3 -0
  155. autocoder/common/linter_core/tests/test_config_loader.py +323 -0
  156. autocoder/common/linter_core/tests/test_config_loading.py +308 -0
  157. autocoder/common/linter_core/tests/test_factory_manager.py +234 -0
  158. autocoder/common/linter_core/tests/test_formatters.py +147 -0
  159. autocoder/common/linter_core/tests/test_integration.py +317 -0
  160. autocoder/common/linter_core/tests/test_java_linter.py +496 -0
  161. autocoder/common/linter_core/tests/test_linters.py +265 -0
  162. autocoder/common/linter_core/tests/test_models.py +81 -0
  163. autocoder/common/linter_core/tests/verify_config_loading.py +296 -0
  164. autocoder/common/linter_core/tests/verify_fixes.py +183 -0
  165. autocoder/common/llm_friendly_package/__init__.py +31 -0
  166. autocoder/common/llm_friendly_package/base_manager.py +102 -0
  167. autocoder/common/llm_friendly_package/docs_manager.py +121 -0
  168. autocoder/common/llm_friendly_package/library_manager.py +171 -0
  169. autocoder/common/{llm_friendly_package.py → llm_friendly_package/main_manager.py} +204 -231
  170. autocoder/common/llm_friendly_package/models.py +40 -0
  171. autocoder/common/llm_friendly_package/test_llm_friendly_package.py +536 -0
  172. autocoder/common/llms/__init__.py +15 -0
  173. autocoder/common/llms/demo_error_handling.py +85 -0
  174. autocoder/common/llms/factory.py +142 -0
  175. autocoder/common/llms/manager.py +264 -0
  176. autocoder/common/llms/pricing.py +121 -0
  177. autocoder/common/llms/registry.py +288 -0
  178. autocoder/common/llms/schema.py +77 -0
  179. autocoder/common/llms/simple_demo.py +45 -0
  180. autocoder/common/llms/test_quick_model.py +116 -0
  181. autocoder/common/llms/test_remove_functionality.py +182 -0
  182. autocoder/common/llms/tests/__init__.py +1 -0
  183. autocoder/common/llms/tests/test_manager.py +330 -0
  184. autocoder/common/llms/tests/test_registry.py +364 -0
  185. autocoder/common/mcp_tools/__init__.py +62 -0
  186. autocoder/common/{mcp_tools.py → mcp_tools/executor.py} +49 -40
  187. autocoder/common/{mcp_hub.py → mcp_tools/hub.py} +42 -68
  188. autocoder/common/{mcp_server_install.py → mcp_tools/installer.py} +16 -28
  189. autocoder/common/{mcp_server.py → mcp_tools/server.py} +176 -48
  190. autocoder/common/mcp_tools/test_keyboard_interrupt.py +93 -0
  191. autocoder/common/mcp_tools/test_mcp_tools.py +391 -0
  192. autocoder/common/{mcp_server_types.py → mcp_tools/types.py} +121 -48
  193. autocoder/common/mcp_tools/verify_functionality.py +202 -0
  194. autocoder/common/model_speed_tester.py +32 -26
  195. autocoder/common/priority_directory_finder/__init__.py +142 -0
  196. autocoder/common/priority_directory_finder/examples.py +230 -0
  197. autocoder/common/priority_directory_finder/finder.py +283 -0
  198. autocoder/common/priority_directory_finder/models.py +236 -0
  199. autocoder/common/priority_directory_finder/test_priority_directory_finder.py +431 -0
  200. autocoder/common/project_scanner/__init__.py +18 -0
  201. autocoder/common/project_scanner/compat.py +77 -0
  202. autocoder/common/project_scanner/scanner.py +436 -0
  203. autocoder/common/project_tracker/__init__.py +27 -0
  204. autocoder/common/project_tracker/api.py +228 -0
  205. autocoder/common/project_tracker/demo.py +272 -0
  206. autocoder/common/project_tracker/tracker.py +487 -0
  207. autocoder/common/project_tracker/types.py +53 -0
  208. autocoder/common/pruner/__init__.py +67 -0
  209. autocoder/common/pruner/agentic_conversation_pruner.py +651 -102
  210. autocoder/common/pruner/conversation_message_ids_api.py +386 -0
  211. autocoder/common/pruner/conversation_message_ids_manager.py +347 -0
  212. autocoder/common/pruner/conversation_message_ids_pruner.py +473 -0
  213. autocoder/common/pruner/conversation_normalizer.py +347 -0
  214. autocoder/common/pruner/conversation_pruner.py +26 -6
  215. autocoder/common/pruner/test_agentic_conversation_pruner.py +554 -112
  216. autocoder/common/pruner/test_conversation_normalizer.py +502 -0
  217. autocoder/common/pruner/test_tool_content_detector.py +324 -0
  218. autocoder/common/pruner/tool_content_detector.py +227 -0
  219. autocoder/common/pruner/tools/__init__.py +18 -0
  220. autocoder/common/pruner/tools/query_message_ids.py +264 -0
  221. autocoder/common/pruner/tools/test_agentic_pruning_logic.py +432 -0
  222. autocoder/common/pruner/tools/test_message_ids_pruning_only.py +192 -0
  223. autocoder/common/pull_requests/__init__.py +9 -1
  224. autocoder/common/pull_requests/utils.py +122 -1
  225. autocoder/common/rag_manager/rag_manager.py +36 -40
  226. autocoder/common/rulefiles/__init__.py +53 -1
  227. autocoder/common/rulefiles/api.py +250 -0
  228. autocoder/common/rulefiles/core/__init__.py +14 -0
  229. autocoder/common/rulefiles/core/manager.py +241 -0
  230. autocoder/common/rulefiles/core/selector.py +805 -0
  231. autocoder/common/rulefiles/models/__init__.py +20 -0
  232. autocoder/common/rulefiles/models/index.py +16 -0
  233. autocoder/common/rulefiles/models/init_rule.py +18 -0
  234. autocoder/common/rulefiles/models/rule_file.py +18 -0
  235. autocoder/common/rulefiles/models/rule_relevance.py +14 -0
  236. autocoder/common/rulefiles/models/summary.py +16 -0
  237. autocoder/common/rulefiles/test_rulefiles.py +776 -0
  238. autocoder/common/rulefiles/utils/__init__.py +34 -0
  239. autocoder/common/rulefiles/utils/monitor.py +86 -0
  240. autocoder/common/rulefiles/utils/parser.py +230 -0
  241. autocoder/common/save_formatted_log.py +67 -10
  242. autocoder/common/search_replace.py +8 -1
  243. autocoder/common/search_replace_patch/__init__.py +24 -0
  244. autocoder/common/search_replace_patch/base.py +115 -0
  245. autocoder/common/search_replace_patch/manager.py +248 -0
  246. autocoder/common/search_replace_patch/patch_replacer.py +304 -0
  247. autocoder/common/search_replace_patch/similarity_replacer.py +306 -0
  248. autocoder/common/search_replace_patch/string_replacer.py +181 -0
  249. autocoder/common/search_replace_patch/tests/__init__.py +3 -0
  250. autocoder/common/search_replace_patch/tests/run_tests.py +126 -0
  251. autocoder/common/search_replace_patch/tests/test_base.py +188 -0
  252. autocoder/common/search_replace_patch/tests/test_empty_line_insert.py +233 -0
  253. autocoder/common/search_replace_patch/tests/test_integration.py +389 -0
  254. autocoder/common/search_replace_patch/tests/test_manager.py +351 -0
  255. autocoder/common/search_replace_patch/tests/test_patch_replacer.py +316 -0
  256. autocoder/common/search_replace_patch/tests/test_regex_replacer.py +306 -0
  257. autocoder/common/search_replace_patch/tests/test_similarity_replacer.py +384 -0
  258. autocoder/common/shell_commands/__init__.py +197 -0
  259. autocoder/common/shell_commands/background_process_notifier.py +346 -0
  260. autocoder/common/shell_commands/command_executor.py +1127 -0
  261. autocoder/common/shell_commands/error_recovery.py +541 -0
  262. autocoder/common/shell_commands/exceptions.py +120 -0
  263. autocoder/common/shell_commands/interactive_executor.py +476 -0
  264. autocoder/common/shell_commands/interactive_pexpect_process.py +623 -0
  265. autocoder/common/shell_commands/interactive_process.py +744 -0
  266. autocoder/common/shell_commands/interactive_session_manager.py +1014 -0
  267. autocoder/common/shell_commands/monitoring.py +529 -0
  268. autocoder/common/shell_commands/process_cleanup.py +386 -0
  269. autocoder/common/shell_commands/process_manager.py +606 -0
  270. autocoder/common/shell_commands/test_interactive_pexpect_process.py +281 -0
  271. autocoder/common/shell_commands/tests/__init__.py +6 -0
  272. autocoder/common/shell_commands/tests/conftest.py +118 -0
  273. autocoder/common/shell_commands/tests/test_background_process_notifier.py +703 -0
  274. autocoder/common/shell_commands/tests/test_command_executor.py +448 -0
  275. autocoder/common/shell_commands/tests/test_error_recovery.py +305 -0
  276. autocoder/common/shell_commands/tests/test_exceptions.py +299 -0
  277. autocoder/common/shell_commands/tests/test_execute_batch.py +588 -0
  278. autocoder/common/shell_commands/tests/test_indented_batch_commands.py +244 -0
  279. autocoder/common/shell_commands/tests/test_integration.py +664 -0
  280. autocoder/common/shell_commands/tests/test_monitoring.py +546 -0
  281. autocoder/common/shell_commands/tests/test_performance.py +632 -0
  282. autocoder/common/shell_commands/tests/test_process_cleanup.py +397 -0
  283. autocoder/common/shell_commands/tests/test_process_manager.py +606 -0
  284. autocoder/common/shell_commands/tests/test_timeout_config.py +343 -0
  285. autocoder/common/shell_commands/tests/test_timeout_manager.py +520 -0
  286. autocoder/common/shell_commands/timeout_config.py +315 -0
  287. autocoder/common/shell_commands/timeout_manager.py +352 -0
  288. autocoder/common/terminal_paste/__init__.py +14 -0
  289. autocoder/common/terminal_paste/demo.py +145 -0
  290. autocoder/common/terminal_paste/demo_paste_functionality.py +95 -0
  291. autocoder/common/terminal_paste/paste_handler.py +200 -0
  292. autocoder/common/terminal_paste/paste_manager.py +118 -0
  293. autocoder/common/terminal_paste/tests/__init__.py +1 -0
  294. autocoder/common/terminal_paste/tests/test_paste_handler.py +182 -0
  295. autocoder/common/terminal_paste/tests/test_paste_manager.py +126 -0
  296. autocoder/common/terminal_paste/utils.py +163 -0
  297. autocoder/common/test_autocoder_args.py +232 -0
  298. autocoder/common/test_env_manager.py +173 -0
  299. autocoder/common/test_env_manager_integration.py +159 -0
  300. autocoder/common/text_similarity/__init__.py +9 -0
  301. autocoder/common/text_similarity/demo.py +216 -0
  302. autocoder/common/text_similarity/examples.py +266 -0
  303. autocoder/common/text_similarity/test_text_similarity.py +306 -0
  304. autocoder/common/text_similarity/text_similarity.py +194 -0
  305. autocoder/common/text_similarity/utils.py +125 -0
  306. autocoder/common/todos/__init__.py +61 -0
  307. autocoder/common/todos/cache/__init__.py +16 -0
  308. autocoder/common/todos/cache/base_cache.py +89 -0
  309. autocoder/common/todos/cache/cache_manager.py +228 -0
  310. autocoder/common/todos/cache/memory_cache.py +225 -0
  311. autocoder/common/todos/config.py +155 -0
  312. autocoder/common/todos/exceptions.py +35 -0
  313. autocoder/common/todos/get_todo_manager.py +161 -0
  314. autocoder/common/todos/manager.py +537 -0
  315. autocoder/common/todos/models.py +239 -0
  316. autocoder/common/todos/storage/__init__.py +14 -0
  317. autocoder/common/todos/storage/base_storage.py +76 -0
  318. autocoder/common/todos/storage/file_storage.py +278 -0
  319. autocoder/common/tokens/counter.py +24 -2
  320. autocoder/common/tools_manager/__init__.py +17 -0
  321. autocoder/common/tools_manager/examples.py +162 -0
  322. autocoder/common/tools_manager/manager.py +385 -0
  323. autocoder/common/tools_manager/models.py +39 -0
  324. autocoder/common/tools_manager/test_tools_manager.py +303 -0
  325. autocoder/common/tools_manager/utils.py +191 -0
  326. autocoder/common/v2/agent/agentic_callbacks.py +270 -0
  327. autocoder/common/v2/agent/agentic_edit.py +2699 -1856
  328. autocoder/common/v2/agent/agentic_edit_change_manager.py +474 -0
  329. autocoder/common/v2/agent/agentic_edit_tools/__init__.py +35 -1
  330. autocoder/common/v2/agent/agentic_edit_tools/ac_mod_list_tool_resolver.py +279 -0
  331. autocoder/common/v2/agent/agentic_edit_tools/ac_mod_write_tool_resolver.py +10 -1
  332. autocoder/common/v2/agent/agentic_edit_tools/background_task_tool_resolver.py +1167 -0
  333. autocoder/common/v2/agent/agentic_edit_tools/base_tool_resolver.py +2 -2
  334. autocoder/common/v2/agent/agentic_edit_tools/conversation_message_ids_read_tool_resolver.py +214 -0
  335. autocoder/common/v2/agent/agentic_edit_tools/conversation_message_ids_write_tool_resolver.py +299 -0
  336. autocoder/common/v2/agent/agentic_edit_tools/count_tokens_tool_resolver.py +290 -0
  337. autocoder/common/v2/agent/agentic_edit_tools/execute_command_tool_resolver.py +564 -29
  338. autocoder/common/v2/agent/agentic_edit_tools/execute_workflow_tool_resolver.py +485 -0
  339. autocoder/common/v2/agent/agentic_edit_tools/extract_to_text_tool_resolver.py +225 -0
  340. autocoder/common/v2/agent/agentic_edit_tools/lint_report.py +79 -0
  341. autocoder/common/v2/agent/agentic_edit_tools/linter_config_models.py +343 -0
  342. autocoder/common/v2/agent/agentic_edit_tools/linter_enabled_tool_resolver.py +189 -0
  343. autocoder/common/v2/agent/agentic_edit_tools/list_files_tool_resolver.py +169 -101
  344. autocoder/common/v2/agent/agentic_edit_tools/load_extra_document_tool_resolver.py +349 -0
  345. autocoder/common/v2/agent/agentic_edit_tools/read_file_tool_resolver.py +243 -50
  346. autocoder/common/v2/agent/agentic_edit_tools/replace_in_file_tool_resolver.py +667 -147
  347. autocoder/common/v2/agent/agentic_edit_tools/run_named_subagents_tool_resolver.py +691 -0
  348. autocoder/common/v2/agent/agentic_edit_tools/search_files_tool_resolver.py +410 -86
  349. autocoder/common/v2/agent/agentic_edit_tools/session_interactive_tool_resolver.py +115 -0
  350. autocoder/common/v2/agent/agentic_edit_tools/session_start_tool_resolver.py +190 -0
  351. autocoder/common/v2/agent/agentic_edit_tools/session_stop_tool_resolver.py +76 -0
  352. autocoder/common/v2/agent/agentic_edit_tools/test_write_to_file_tool_resolver.py +207 -192
  353. autocoder/common/v2/agent/agentic_edit_tools/todo_read_tool_resolver.py +80 -63
  354. autocoder/common/v2/agent/agentic_edit_tools/todo_write_tool_resolver.py +237 -233
  355. autocoder/common/v2/agent/agentic_edit_tools/use_mcp_tool_resolver.py +2 -2
  356. autocoder/common/v2/agent/agentic_edit_tools/web_crawl_tool_resolver.py +557 -0
  357. autocoder/common/v2/agent/agentic_edit_tools/web_search_tool_resolver.py +600 -0
  358. autocoder/common/v2/agent/agentic_edit_tools/write_to_file_tool_resolver.py +56 -121
  359. autocoder/common/v2/agent/agentic_edit_types.py +343 -9
  360. autocoder/common/v2/agent/runner/__init__.py +3 -3
  361. autocoder/common/v2/agent/runner/base_runner.py +12 -26
  362. autocoder/common/v2/agent/runner/{event_runner.py → file_based_event_runner.py} +3 -2
  363. autocoder/common/v2/agent/runner/sdk_runner.py +150 -8
  364. autocoder/common/v2/agent/runner/terminal_runner.py +170 -57
  365. autocoder/common/v2/agent/runner/tool_display.py +557 -159
  366. autocoder/common/v2/agent/test_agentic_callbacks.py +265 -0
  367. autocoder/common/v2/agent/test_agentic_edit.py +194 -0
  368. autocoder/common/v2/agent/tool_caller/__init__.py +24 -0
  369. autocoder/common/v2/agent/tool_caller/default_tool_resolver_map.py +135 -0
  370. autocoder/common/v2/agent/tool_caller/integration_test.py +172 -0
  371. autocoder/common/v2/agent/tool_caller/plugins/__init__.py +14 -0
  372. autocoder/common/v2/agent/tool_caller/plugins/base_plugin.py +126 -0
  373. autocoder/common/v2/agent/tool_caller/plugins/examples/__init__.py +13 -0
  374. autocoder/common/v2/agent/tool_caller/plugins/examples/logging_plugin.py +164 -0
  375. autocoder/common/v2/agent/tool_caller/plugins/examples/security_filter_plugin.py +198 -0
  376. autocoder/common/v2/agent/tool_caller/plugins/plugin_interface.py +141 -0
  377. autocoder/common/v2/agent/tool_caller/test_tool_caller.py +278 -0
  378. autocoder/common/v2/agent/tool_caller/tool_call_plugin_manager.py +331 -0
  379. autocoder/common/v2/agent/tool_caller/tool_caller.py +337 -0
  380. autocoder/common/v2/agent/tool_caller/usage_example.py +193 -0
  381. autocoder/common/v2/code_agentic_editblock_manager.py +4 -4
  382. autocoder/common/v2/code_auto_generate.py +136 -78
  383. autocoder/common/v2/code_auto_generate_diff.py +135 -79
  384. autocoder/common/v2/code_auto_generate_editblock.py +174 -99
  385. autocoder/common/v2/code_auto_generate_strict_diff.py +151 -71
  386. autocoder/common/v2/code_auto_merge.py +1 -1
  387. autocoder/common/v2/code_auto_merge_editblock.py +13 -1
  388. autocoder/common/v2/code_diff_manager.py +3 -3
  389. autocoder/common/v2/code_editblock_manager.py +4 -14
  390. autocoder/common/v2/code_manager.py +1 -1
  391. autocoder/common/v2/code_strict_diff_manager.py +2 -2
  392. autocoder/common/wrap_llm_hint/__init__.py +10 -0
  393. autocoder/common/wrap_llm_hint/test_wrap_llm_hint.py +1067 -0
  394. autocoder/common/wrap_llm_hint/utils.py +432 -0
  395. autocoder/common/wrap_llm_hint/wrap_llm_hint.py +323 -0
  396. autocoder/completer/__init__.py +8 -0
  397. autocoder/completer/command_completer_v2.py +1051 -0
  398. autocoder/default_project/__init__.py +501 -0
  399. autocoder/dispacher/__init__.py +4 -12
  400. autocoder/dispacher/actions/action.py +165 -7
  401. autocoder/dispacher/actions/plugins/action_regex_project.py +2 -2
  402. autocoder/index/entry.py +116 -124
  403. autocoder/{agent → index/filter}/agentic_filter.py +322 -333
  404. autocoder/index/filter/normal_filter.py +5 -11
  405. autocoder/index/filter/quick_filter.py +1 -1
  406. autocoder/index/index.py +36 -9
  407. autocoder/index/tests/__init__.py +1 -0
  408. autocoder/index/tests/run_tests.py +195 -0
  409. autocoder/index/tests/test_entry.py +303 -0
  410. autocoder/index/tests/test_index_manager.py +314 -0
  411. autocoder/index/tests/test_module_integration.py +300 -0
  412. autocoder/index/tests/test_symbols_utils.py +183 -0
  413. autocoder/inner/__init__.py +4 -0
  414. autocoder/inner/agentic.py +932 -0
  415. autocoder/inner/async_command_handler.py +992 -0
  416. autocoder/inner/conversation_command_handlers.py +623 -0
  417. autocoder/inner/merge_command_handler.py +213 -0
  418. autocoder/inner/queue_command_handler.py +684 -0
  419. autocoder/models.py +95 -266
  420. autocoder/plugins/git_helper_plugin.py +31 -29
  421. autocoder/plugins/token_helper_plugin.py +65 -46
  422. autocoder/pyproject/__init__.py +32 -29
  423. autocoder/rag/agentic_rag.py +215 -75
  424. autocoder/rag/cache/simple_cache.py +1 -2
  425. autocoder/rag/loaders/image_loader.py +1 -1
  426. autocoder/rag/long_context_rag.py +42 -26
  427. autocoder/rag/qa_conversation_strategy.py +1 -1
  428. autocoder/rag/terminal/__init__.py +17 -0
  429. autocoder/rag/terminal/args.py +581 -0
  430. autocoder/rag/terminal/bootstrap.py +61 -0
  431. autocoder/rag/terminal/command_handlers.py +653 -0
  432. autocoder/rag/terminal/formatters/__init__.py +20 -0
  433. autocoder/rag/terminal/formatters/base.py +70 -0
  434. autocoder/rag/terminal/formatters/json_format.py +66 -0
  435. autocoder/rag/terminal/formatters/stream_json.py +95 -0
  436. autocoder/rag/terminal/formatters/text.py +28 -0
  437. autocoder/rag/terminal/init.py +120 -0
  438. autocoder/rag/terminal/utils.py +106 -0
  439. autocoder/rag/test_agentic_rag.py +389 -0
  440. autocoder/rag/test_doc_filter.py +3 -3
  441. autocoder/rag/test_long_context_rag.py +1 -1
  442. autocoder/rag/test_token_limiter.py +517 -10
  443. autocoder/rag/token_counter.py +3 -0
  444. autocoder/rag/token_limiter.py +19 -15
  445. autocoder/rag/tools/__init__.py +26 -2
  446. autocoder/rag/tools/bochaai_example.py +343 -0
  447. autocoder/rag/tools/bochaai_sdk.py +541 -0
  448. autocoder/rag/tools/metaso_example.py +268 -0
  449. autocoder/rag/tools/metaso_sdk.py +417 -0
  450. autocoder/rag/tools/recall_tool.py +28 -7
  451. autocoder/rag/tools/run_integration_tests.py +204 -0
  452. autocoder/rag/tools/test_all_providers.py +318 -0
  453. autocoder/rag/tools/test_bochaai_integration.py +482 -0
  454. autocoder/rag/tools/test_final_integration.py +215 -0
  455. autocoder/rag/tools/test_metaso_integration.py +424 -0
  456. autocoder/rag/tools/test_metaso_real.py +171 -0
  457. autocoder/rag/tools/test_web_crawl_tool.py +639 -0
  458. autocoder/rag/tools/test_web_search_tool.py +509 -0
  459. autocoder/rag/tools/todo_read_tool.py +202 -0
  460. autocoder/rag/tools/todo_write_tool.py +412 -0
  461. autocoder/rag/tools/web_crawl_tool.py +634 -0
  462. autocoder/rag/tools/web_search_tool.py +558 -0
  463. autocoder/rag/tools/web_tools_example.py +119 -0
  464. autocoder/rag/types.py +16 -0
  465. autocoder/rag/variable_holder.py +4 -2
  466. autocoder/rags.py +86 -79
  467. autocoder/regexproject/__init__.py +23 -21
  468. autocoder/sdk/__init__.py +46 -190
  469. autocoder/sdk/api.py +370 -0
  470. autocoder/sdk/async_runner/__init__.py +26 -0
  471. autocoder/sdk/async_runner/async_executor.py +650 -0
  472. autocoder/sdk/async_runner/async_handler.py +356 -0
  473. autocoder/sdk/async_runner/markdown_processor.py +595 -0
  474. autocoder/sdk/async_runner/task_metadata.py +284 -0
  475. autocoder/sdk/async_runner/worktree_manager.py +438 -0
  476. autocoder/sdk/cli/__init__.py +2 -5
  477. autocoder/sdk/cli/formatters.py +28 -204
  478. autocoder/sdk/cli/handlers.py +77 -44
  479. autocoder/sdk/cli/main.py +154 -171
  480. autocoder/sdk/cli/options.py +95 -22
  481. autocoder/sdk/constants.py +139 -51
  482. autocoder/sdk/core/auto_coder_core.py +484 -109
  483. autocoder/sdk/core/bridge.py +297 -115
  484. autocoder/sdk/exceptions.py +18 -12
  485. autocoder/sdk/formatters/__init__.py +19 -0
  486. autocoder/sdk/formatters/input.py +64 -0
  487. autocoder/sdk/formatters/output.py +247 -0
  488. autocoder/sdk/formatters/stream.py +54 -0
  489. autocoder/sdk/models/__init__.py +6 -5
  490. autocoder/sdk/models/options.py +55 -18
  491. autocoder/sdk/utils/formatters.py +27 -195
  492. autocoder/suffixproject/__init__.py +28 -25
  493. autocoder/terminal/__init__.py +14 -0
  494. autocoder/terminal/app.py +454 -0
  495. autocoder/terminal/args.py +32 -0
  496. autocoder/terminal/bootstrap.py +178 -0
  497. autocoder/terminal/command_processor.py +521 -0
  498. autocoder/terminal/command_registry.py +57 -0
  499. autocoder/terminal/help.py +97 -0
  500. autocoder/terminal/tasks/__init__.py +5 -0
  501. autocoder/terminal/tasks/background.py +77 -0
  502. autocoder/terminal/tasks/task_event.py +70 -0
  503. autocoder/terminal/ui/__init__.py +13 -0
  504. autocoder/terminal/ui/completer.py +268 -0
  505. autocoder/terminal/ui/keybindings.py +75 -0
  506. autocoder/terminal/ui/session.py +41 -0
  507. autocoder/terminal/ui/toolbar.py +64 -0
  508. autocoder/terminal/utils/__init__.py +13 -0
  509. autocoder/terminal/utils/errors.py +18 -0
  510. autocoder/terminal/utils/paths.py +19 -0
  511. autocoder/terminal/utils/shell.py +43 -0
  512. autocoder/terminal_v3/__init__.py +10 -0
  513. autocoder/terminal_v3/app.py +201 -0
  514. autocoder/terminal_v3/handlers/__init__.py +5 -0
  515. autocoder/terminal_v3/handlers/command_handler.py +131 -0
  516. autocoder/terminal_v3/models/__init__.py +6 -0
  517. autocoder/terminal_v3/models/conversation_buffer.py +214 -0
  518. autocoder/terminal_v3/models/message.py +50 -0
  519. autocoder/terminal_v3/models/tool_display.py +247 -0
  520. autocoder/terminal_v3/ui/__init__.py +7 -0
  521. autocoder/terminal_v3/ui/keybindings.py +56 -0
  522. autocoder/terminal_v3/ui/layout.py +141 -0
  523. autocoder/terminal_v3/ui/styles.py +43 -0
  524. autocoder/tsproject/__init__.py +23 -23
  525. autocoder/utils/auto_coder_utils/chat_stream_out.py +1 -1
  526. autocoder/utils/llms.py +88 -80
  527. autocoder/utils/math_utils.py +101 -0
  528. autocoder/utils/model_provider_selector.py +16 -4
  529. autocoder/utils/operate_config_api.py +33 -5
  530. autocoder/utils/thread_utils.py +2 -2
  531. autocoder/version.py +4 -2
  532. autocoder/workflow_agents/__init__.py +84 -0
  533. autocoder/workflow_agents/agent.py +143 -0
  534. autocoder/workflow_agents/exceptions.py +573 -0
  535. autocoder/workflow_agents/executor.py +489 -0
  536. autocoder/workflow_agents/loader.py +737 -0
  537. autocoder/workflow_agents/runner.py +267 -0
  538. autocoder/workflow_agents/types.py +172 -0
  539. autocoder/workflow_agents/utils.py +434 -0
  540. autocoder/workflow_agents/workflow_manager.py +211 -0
  541. auto_coder-1.0.0.dist-info/METADATA +0 -396
  542. auto_coder-1.0.0.dist-info/RECORD +0 -442
  543. auto_coder-1.0.0.dist-info/licenses/LICENSE +0 -201
  544. autocoder/auto_coder_server.py +0 -672
  545. autocoder/benchmark.py +0 -138
  546. autocoder/common/ac_style_command_parser/example.py +0 -7
  547. autocoder/common/cleaner.py +0 -31
  548. autocoder/common/command_completer_v2.py +0 -615
  549. autocoder/common/context_pruner.py +0 -477
  550. autocoder/common/conversation_pruner.py +0 -132
  551. autocoder/common/directory_cache/__init__.py +0 -1
  552. autocoder/common/directory_cache/cache.py +0 -192
  553. autocoder/common/directory_cache/test_cache.py +0 -190
  554. autocoder/common/file_checkpoint/examples.py +0 -217
  555. autocoder/common/llm_friendly_package_example.py +0 -138
  556. autocoder/common/llm_friendly_package_test.py +0 -63
  557. autocoder/common/pull_requests/test_module.py +0 -1
  558. autocoder/common/rulefiles/autocoderrules_utils.py +0 -484
  559. autocoder/common/text.py +0 -30
  560. autocoder/common/v2/agent/agentic_edit_tools/list_package_info_tool_resolver.py +0 -42
  561. autocoder/common/v2/agent/agentic_edit_tools/test_execute_command_tool_resolver.py +0 -70
  562. autocoder/common/v2/agent/agentic_edit_tools/test_search_files_tool_resolver.py +0 -163
  563. autocoder/common/v2/agent/agentic_tool_display.py +0 -183
  564. autocoder/plugins/dynamic_completion_example.py +0 -148
  565. autocoder/plugins/sample_plugin.py +0 -160
  566. autocoder/sdk/cli/__main__.py +0 -26
  567. autocoder/sdk/cli/completion_wrapper.py +0 -38
  568. autocoder/sdk/cli/install_completion.py +0 -301
  569. autocoder/sdk/models/messages.py +0 -209
  570. autocoder/sdk/session/__init__.py +0 -32
  571. autocoder/sdk/session/session.py +0 -106
  572. autocoder/sdk/session/session_manager.py +0 -56
  573. {auto_coder-1.0.0.dist-info → auto_coder-2.0.0.dist-info}/top_level.txt +0 -0
  574. /autocoder/{sdk/example.py → common/agent_query_queue/__init__.py} +0 -0
@@ -0,0 +1,232 @@
1
+ import pytest
2
+ from autocoder.common import AutoCoderArgs
3
+
4
+
5
+ class TestAutoCoderArgsDefaults:
6
+ """Test all default values of AutoCoderArgs"""
7
+
8
+ def test_all_field_defaults(self):
9
+ """Test all field default values by creating instance without parameters"""
10
+ args = AutoCoderArgs()
11
+
12
+ # Test basic fields
13
+ assert args.request_id is None
14
+ assert args.source_dir == "."
15
+ assert args.git_url is None
16
+ assert args.target_file is None
17
+ assert args.query is None
18
+ assert args.template is None
19
+ assert args.project_type is None
20
+ assert args.execute is None
21
+ assert args.package_name == ""
22
+ assert args.script_path == ""
23
+
24
+ # Test model fields
25
+ assert args.model == ""
26
+ assert args.chat_model == ""
27
+ assert args.model_max_length == 2000
28
+ assert args.model_max_input_length == 6000
29
+ assert args.vl_model == ""
30
+ assert args.sd_model == ""
31
+ assert args.emb_model == ""
32
+ assert args.code_model == ""
33
+ assert args.generate_rerank_model == ""
34
+ assert args.context_prune_model == ""
35
+ assert args.conversation_prune_model == ""
36
+ assert args.inference_model == ""
37
+ assert args.system_prompt == ""
38
+ assert args.planner_model == ""
39
+ assert args.voice2text_model == ""
40
+ assert args.text2voice_model == ""
41
+ assert args.commit_model == ""
42
+
43
+ # Test index fields
44
+ assert args.skip_build_index is False
45
+ assert args.skip_filter_index is False
46
+ assert args.index_model == ""
47
+ assert args.index_filter_model == ""
48
+ assert args.index_filter_model_max_input_length == 50*1024
49
+ assert args.index_model_max_length == 0
50
+ assert args.index_model_max_input_length == 0
51
+ assert args.index_model_anti_quota_limit == 0
52
+
53
+ # Test agentic fields
54
+ assert args.enable_agentic_filter is False
55
+ assert args.enable_agentic_edit is True
56
+ assert args.enable_agentic_auto_approve is False
57
+ assert args.enable_agentic_dangerous_command_check is False
58
+
59
+ # Test filter fields
60
+ assert args.index_filter_level == 0
61
+ assert args.index_filter_enable_relevance_verification is True
62
+ assert args.index_filter_workers == 1
63
+ assert args.index_filter_file_num == 10
64
+ assert args.index_build_workers == 1
65
+
66
+ # Test other model fields
67
+ assert args.designer_model == ""
68
+ assert args.file is None
69
+ assert args.ray_address == ""
70
+ assert args.anti_quota_limit == 1
71
+ assert args.print_request is False
72
+ assert args.py_packages == ""
73
+
74
+ # Test search fields
75
+ assert args.search == ""
76
+ assert args.search_engine == ""
77
+ assert args.search_engine_token == ""
78
+
79
+ # Test RAG fields
80
+ assert args.rag_url == ""
81
+ assert args.rag_token == ""
82
+ assert args.rag_type == "storage"
83
+ assert args.rag_storage_type == "duckdb"
84
+ assert args.rag_params_max_tokens == 500000
85
+ assert args.rag_doc_filter_relevance == 2
86
+ assert args.rag_context_window_limit == 120000
87
+ assert args.rag_duckdb_vector_dim == 1024
88
+ assert args.rag_duckdb_query_similarity == 0.1
89
+ assert args.rag_duckdb_query_top_k == 10000
90
+ assert args.rag_index_build_workers == 10
91
+ assert args.rag_emb_dim == 1024
92
+ assert args.rag_emb_text_size == 1024
93
+ assert args.local_image_host == ""
94
+ assert args.rag_recall_max_queries == 5
95
+ assert args.rag_qa_conversation_strategy == "multi_round"
96
+
97
+ # Test relevance and context fields
98
+ assert args.verify_file_relevance_score == 6
99
+ assert args.enable_rag_search is False
100
+ assert args.enable_rag_context is False
101
+ assert args.collection is None
102
+ assert args.collections is None
103
+
104
+ # Test merge and human fields
105
+ assert args.auto_merge is False
106
+ assert args.human_as_model is False
107
+ assert args.human_model_num == 1
108
+
109
+ # Test image fields
110
+ assert args.image_file == ""
111
+ assert args.image_mode == "direct"
112
+ assert args.image_max_iter == 1
113
+
114
+ # Test URL fields
115
+ assert args.urls == ""
116
+ assert args.urls_use_model is False
117
+ assert args.command is None
118
+ assert args.doc_command is None
119
+ assert args.required_exts is None
120
+ assert args.hybrid_index_max_output_tokens == 1000000
121
+
122
+ # Test various enable fields
123
+ assert args.enable_multi_round_generate is False
124
+ assert args.monitor_mode is False
125
+ assert args.enable_hybrid_index is False
126
+ assert args.rag_build_name is None
127
+ assert args.disable_auto_window is False
128
+ assert args.filter_batch_size == 5
129
+ assert args.disable_segment_reorder is False
130
+ assert args.tokenizer_path is None
131
+ assert args.skip_confirm is False
132
+ assert args.silence is False
133
+ assert args.exclude_files == ""
134
+ assert args.output == ""
135
+ assert args.single_file is False
136
+ assert args.query_prefix is None
137
+ assert args.query_suffix is None
138
+ assert args.from_yaml is None
139
+ assert args.base_dir is None
140
+ assert args.context is None
141
+ assert args.editblock_similarity == 0.9
142
+ assert args.include_project_structure is False
143
+ assert args.new_session is False
144
+
145
+ # Test prompt and review fields
146
+ assert args.prompt_review is None
147
+ assert args.agent_designer_mode == "svg"
148
+
149
+ # Test ratio fields
150
+ assert args.full_text_ratio == 0.7
151
+ assert args.segment_ratio == 0.2
152
+ assert args.buff_ratio == 0.1
153
+
154
+ # Test inference fields
155
+ assert args.disable_inference_enhance is True
156
+ assert args.inference_deep_thought is False
157
+ assert args.inference_slow_without_deep_thought is False
158
+ assert args.inference_compute_precision == 64
159
+ assert args.without_contexts is False
160
+ assert args.skip_events is False
161
+ assert args.data_cells_max_num == 2000
162
+ assert args.generate_times_same_model == 1
163
+ assert args.rank_times_same_model == 1
164
+
165
+ # Test strategy fields
166
+ assert args.rank_strategy == "file"
167
+
168
+ # Test action and mode fields
169
+ assert args.action == []
170
+ assert args.enable_global_memory is False
171
+ assert args.product_mode == "lite"
172
+
173
+ # Test reasoning content fields
174
+ assert args.keep_reasoning_content is False
175
+ assert args.keep_only_reasoning_content is False
176
+
177
+ # Test code apply fields
178
+ assert args.in_code_apply is False
179
+ assert args.model_filter_path is None
180
+
181
+ # Test conversation prune fields
182
+ assert args.conversation_prune_safe_zone_tokens == 50*1024
183
+ assert args.conversation_prune_group_size == 4
184
+ assert args.conversation_prune_strategy == "summarize"
185
+
186
+ # Test context prune fields
187
+ assert args.context_prune_strategy == "extract"
188
+ assert args.context_prune is True
189
+ assert args.context_prune_safe_zone_tokens == 24*1024
190
+ assert args.context_prune_sliding_window_size == 1000
191
+ assert args.context_prune_sliding_window_overlap == 100
192
+
193
+ # Test command fields
194
+ assert args.auto_command_max_iterations == 10
195
+ assert args.use_shell_commands is True
196
+ assert args.skip_commit is False
197
+
198
+ # Test beta and reproduction fields
199
+ assert args.enable_beta is False
200
+ assert args.how_to_reproduce is None
201
+
202
+ # Test URL lists
203
+ assert args.dynamic_urls == []
204
+ assert args.add_updated_urls == []
205
+
206
+ # Test history fields
207
+ assert args.enable_task_history is False
208
+ assert args.event_file is None
209
+
210
+ # Test active context fields
211
+ assert args.enable_active_context is False
212
+ assert args.enable_active_context_in_generate is False
213
+
214
+ # Test generate fields
215
+ assert args.generate_max_rounds == 5
216
+
217
+ # Test revert fields
218
+ assert args.revert_commit_id is None
219
+
220
+ # Test auto fix fields
221
+ assert args.enable_auto_fix_lint is False
222
+ assert args.enable_auto_fix_compile is False
223
+ assert args.enable_auto_fix_merge is False
224
+ assert args.auto_fix_lint_max_attempts == 5
225
+ assert args.auto_fix_compile_max_attempts == 5
226
+ assert args.auto_fix_merge_max_attempts == 5
227
+
228
+ # Test rules fields
229
+ assert args.enable_auto_select_rules is True
230
+
231
+ # Test shadows fields
232
+ assert args.ignore_clean_shadows is False
@@ -0,0 +1,173 @@
1
+
2
+ #!/usr/bin/env python3
3
+ """
4
+ 环境变量管理模块测试脚本
5
+
6
+ 用于测试 env_manager.py 模块的各项功能
7
+ """
8
+
9
+ import os
10
+ import sys
11
+ from pathlib import Path
12
+
13
+ # 添加项目根目录到路径,以便导入模块
14
+ project_root = Path(__file__).parent.parent.parent.parent
15
+ sys.path.insert(0, str(project_root))
16
+
17
+ from src.autocoder.common.env_manager import (
18
+ EnvManager, Environment,
19
+ get_environment, is_production, is_development,
20
+ get_env, get_env_bool, get_env_int, get_env_float,
21
+ set_env, has_env, get_env_info
22
+ )
23
+
24
+
25
+ def test_basic_functionality():
26
+ """测试基本功能"""
27
+ print("=== 测试基本功能 ===")
28
+
29
+ # 测试默认环境
30
+ print(f"默认环境: {get_environment()}")
31
+ print(f"是否为生产环境: {is_production()}")
32
+ print(f"是否为开发环境: {is_development()}")
33
+ print()
34
+
35
+
36
+ def test_environment_detection():
37
+ """测试环境检测功能"""
38
+ print("=== 测试环境检测功能 ===")
39
+
40
+ # 保存原始环境变量
41
+ original_env = os.environ.get("AUTO_CODER_ENV")
42
+
43
+ # 测试生产环境
44
+ test_cases = [
45
+ ("production", Environment.PRODUCTION),
46
+ ("prod", Environment.PRODUCTION),
47
+ ("PRODUCTION", Environment.PRODUCTION),
48
+ ("development", Environment.DEVELOPMENT),
49
+ ("dev", Environment.DEVELOPMENT),
50
+ ("DEV", Environment.DEVELOPMENT),
51
+ ("unknown", Environment.DEVELOPMENT), # 未知值默认为开发环境
52
+ ]
53
+
54
+ for env_value, expected in test_cases:
55
+ set_env("AUTO_CODER_ENV", env_value)
56
+ result = get_environment()
57
+ status = "✓" if result == expected else "✗"
58
+ print(f"{status} 设置 AUTO_CODER_ENV={env_value}, 期望: {expected.value}, 实际: {result.value}")
59
+
60
+ # 恢复原始环境变量
61
+ if original_env is not None:
62
+ os.environ["AUTO_CODER_ENV"] = original_env
63
+ elif "AUTO_CODER_ENV" in os.environ:
64
+ del os.environ["AUTO_CODER_ENV"]
65
+
66
+ print()
67
+
68
+
69
+ def test_type_conversion():
70
+ """测试类型转换功能"""
71
+ print("=== 测试类型转换功能 ===")
72
+
73
+ # 测试布尔值转换
74
+ bool_test_cases = [
75
+ ("true", True),
76
+ ("True", True),
77
+ ("1", True),
78
+ ("yes", True),
79
+ ("on", True),
80
+ ("false", False),
81
+ ("False", False),
82
+ ("0", False),
83
+ ("no", False),
84
+ ("off", False),
85
+ ("", False),
86
+ ]
87
+
88
+ for value, expected in bool_test_cases:
89
+ set_env("TEST_BOOL", value)
90
+ result = get_env_bool("TEST_BOOL")
91
+ status = "✓" if result == expected else "✗"
92
+ print(f"{status} 布尔值 '{value}' -> {result} (期望: {expected})")
93
+
94
+ # 测试整数转换
95
+ set_env("TEST_INT", "42")
96
+ result = get_env_int("TEST_INT")
97
+ print(f"{'✓' if result == 42 else '✗'} 整数 '42' -> {result}")
98
+
99
+ # 测试浮点数转换
100
+ set_env("TEST_FLOAT", "3.14")
101
+ result = get_env_float("TEST_FLOAT")
102
+ print(f"{'✓' if abs(result - 3.14) < 0.001 else '✗'} 浮点数 '3.14' -> {result}")
103
+
104
+ # 测试无效值的默认值处理
105
+ set_env("TEST_INVALID_INT", "not_a_number")
106
+ result = get_env_int("TEST_INVALID_INT", 999)
107
+ print(f"{'✓' if result == 999 else '✗'} 无效整数使用默认值 -> {result}")
108
+
109
+ # 清理测试环境变量
110
+ for key in ["TEST_BOOL", "TEST_INT", "TEST_FLOAT", "TEST_INVALID_INT"]:
111
+ if key in os.environ:
112
+ del os.environ[key]
113
+
114
+ print()
115
+
116
+
117
+ def test_env_management():
118
+ """测试环境变量管理功能"""
119
+ print("=== 测试环境变量管理功能 ===")
120
+
121
+ # 测试设置和获取
122
+ set_env("TEST_VAR", "test_value")
123
+ result = get_env("TEST_VAR")
124
+ print(f"{'✓' if result == 'test_value' else '✗'} 设置和获取环境变量: {result}")
125
+
126
+ # 测试环境变量存在性检查
127
+ exists = has_env("TEST_VAR")
128
+ print(f"{'✓' if exists else '✗'} 环境变量存在性检查: {exists}")
129
+
130
+ # 测试不存在的环境变量
131
+ not_exists = has_env("NON_EXISTENT_VAR")
132
+ print(f"{'✓' if not not_exists else '✗'} 不存在的环境变量检查: {not_exists}")
133
+
134
+ # 测试默认值
135
+ default_result = get_env("NON_EXISTENT_VAR", "default_value")
136
+ print(f"{'✓' if default_result == 'default_value' else '✗'} 使用默认值: {default_result}")
137
+
138
+ # 清理测试环境变量
139
+ if "TEST_VAR" in os.environ:
140
+ del os.environ["TEST_VAR"]
141
+
142
+ print()
143
+
144
+
145
+ def test_env_info():
146
+ """测试环境信息获取功能"""
147
+ print("=== 测试环境信息获取功能 ===")
148
+
149
+ env_info = get_env_info()
150
+ print("环境信息:")
151
+ for key, value in env_info.items():
152
+ print(f" {key}: {value}")
153
+
154
+ print()
155
+
156
+
157
+ def main():
158
+ """主测试函数"""
159
+ print("环境变量管理模块测试")
160
+ print("=" * 50)
161
+
162
+ test_basic_functionality()
163
+ test_environment_detection()
164
+ test_type_conversion()
165
+ test_env_management()
166
+ test_env_info()
167
+
168
+ print("测试完成!")
169
+
170
+
171
+ if __name__ == "__main__":
172
+ main()
173
+
@@ -0,0 +1,159 @@
1
+
2
+ #!/usr/bin/env python3
3
+ """
4
+ 环境变量管理模块集成测试
5
+
6
+ 验证模块在项目中的集成情况
7
+ """
8
+
9
+ import sys
10
+ import os
11
+ from pathlib import Path
12
+
13
+ # 确保可以导入项目模块
14
+ project_root = Path(__file__).parent.parent.parent.parent
15
+ sys.path.insert(0, str(project_root))
16
+
17
+ def test_import():
18
+ """测试模块导入"""
19
+ try:
20
+ # 测试直接导入
21
+ from src.autocoder.common.env_manager import (
22
+ EnvManager, Environment,
23
+ get_environment, is_production, is_development
24
+ )
25
+ print("✓ 模块导入成功")
26
+ return True
27
+ except ImportError as e:
28
+ print(f"✗ 模块导入失败: {e}")
29
+ return False
30
+
31
+ def test_basic_functionality():
32
+ """测试基本功能"""
33
+ try:
34
+ from src.autocoder.common.env_manager import (
35
+ get_environment, is_production, is_development,
36
+ get_env, set_env
37
+ )
38
+
39
+ # 测试环境检测
40
+ env = get_environment()
41
+ print(f"✓ 当前环境: {env.value}")
42
+
43
+ # 测试环境变量设置和获取
44
+ test_key = "TEST_INTEGRATION_VAR"
45
+ test_value = "integration_test_value"
46
+
47
+ set_env(test_key, test_value)
48
+ retrieved_value = get_env(test_key)
49
+
50
+ if retrieved_value == test_value:
51
+ print("✓ 环境变量设置和获取功能正常")
52
+ else:
53
+ print(f"✗ 环境变量功能异常: 期望 {test_value}, 实际 {retrieved_value}")
54
+ return False
55
+
56
+ # 清理测试环境变量
57
+ if test_key in os.environ:
58
+ del os.environ[test_key]
59
+
60
+ return True
61
+
62
+ except Exception as e:
63
+ print(f"✗ 基本功能测试失败: {e}")
64
+ return False
65
+
66
+ def test_with_existing_project_modules():
67
+ """测试与现有项目模块的兼容性"""
68
+ try:
69
+ # 测试与现有的 detect_env 函数兼容性
70
+ from src.autocoder.common import detect_env
71
+ from src.autocoder.common.env_manager import get_env_info
72
+
73
+ # 获取现有的环境信息
74
+ existing_env_info = detect_env()
75
+ print(f"✓ 现有环境检测正常: {existing_env_info.os_name}")
76
+
77
+ # 获取新模块的环境信息
78
+ new_env_info = get_env_info()
79
+ print(f"✓ 新环境管理模块正常: {new_env_info['environment']}")
80
+
81
+ return True
82
+
83
+ except Exception as e:
84
+ print(f"✗ 项目模块兼容性测试失败: {e}")
85
+ return False
86
+
87
+ def test_environment_switching():
88
+ """测试环境切换功能"""
89
+ try:
90
+ from src.autocoder.common.env_manager import (
91
+ get_environment, is_production, is_development, set_env
92
+ )
93
+
94
+ # 保存原始环境
95
+ original_env = os.environ.get("AUTO_CODER_ENV")
96
+
97
+ # 测试切换到生产环境
98
+ set_env("AUTO_CODER_ENV", "production")
99
+ if is_production() and not is_development():
100
+ print("✓ 生产环境切换成功")
101
+ else:
102
+ print("✗ 生产环境切换失败")
103
+ return False
104
+
105
+ # 测试切换到开发环境
106
+ set_env("AUTO_CODER_ENV", "development")
107
+ if is_development() and not is_production():
108
+ print("✓ 开发环境切换成功")
109
+ else:
110
+ print("✗ 开发环境切换失败")
111
+ return False
112
+
113
+ # 恢复原始环境
114
+ if original_env:
115
+ os.environ["AUTO_CODER_ENV"] = original_env
116
+ elif "AUTO_CODER_ENV" in os.environ:
117
+ del os.environ["AUTO_CODER_ENV"]
118
+
119
+ return True
120
+
121
+ except Exception as e:
122
+ print(f"✗ 环境切换测试失败: {e}")
123
+ return False
124
+
125
+ def main():
126
+ """主测试函数"""
127
+ print("环境变量管理模块集成测试")
128
+ print("=" * 50)
129
+
130
+ tests = [
131
+ test_import,
132
+ test_basic_functionality,
133
+ test_with_existing_project_modules,
134
+ test_environment_switching,
135
+ ]
136
+
137
+ passed = 0
138
+ total = len(tests)
139
+
140
+ for test in tests:
141
+ print(f"\n运行测试: {test.__name__}")
142
+ if test():
143
+ passed += 1
144
+ else:
145
+ print(f"测试 {test.__name__} 失败")
146
+
147
+ print(f"\n测试结果: {passed}/{total} 通过")
148
+
149
+ if passed == total:
150
+ print("🎉 所有集成测试通过!")
151
+ return True
152
+ else:
153
+ print("❌ 部分集成测试失败")
154
+ return False
155
+
156
+ if __name__ == "__main__":
157
+ success = main()
158
+ sys.exit(0 if success else 1)
159
+
@@ -0,0 +1,9 @@
1
+ """
2
+ Text Similarity AC Module
3
+
4
+ This module provides text similarity calculation functionality with sliding window matching.
5
+ """
6
+
7
+ from .text_similarity import TextSimilarity
8
+
9
+ __all__ = ['TextSimilarity']