auto-coder 0.1.305__py3-none-any.whl → 0.1.307__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 (43) hide show
  1. {auto_coder-0.1.305.dist-info → auto_coder-0.1.307.dist-info}/METADATA +1 -1
  2. {auto_coder-0.1.305.dist-info → auto_coder-0.1.307.dist-info}/RECORD +43 -38
  3. autocoder/agent/auto_demand_organizer.py +13 -20
  4. autocoder/agent/auto_filegroup.py +10 -16
  5. autocoder/agent/auto_learn_from_commit.py +25 -33
  6. autocoder/agent/auto_review_commit.py +15 -64
  7. autocoder/auto_coder.py +6 -8
  8. autocoder/auto_coder_runner.py +153 -8
  9. autocoder/chat_auto_coder.py +9 -1
  10. autocoder/chat_auto_coder_lang.py +552 -278
  11. autocoder/commands/auto_command.py +31 -7
  12. autocoder/common/__init__.py +6 -0
  13. autocoder/common/action_yml_file_manager.py +75 -37
  14. autocoder/common/auto_coder_lang.py +737 -401
  15. autocoder/common/code_auto_generate.py +104 -16
  16. autocoder/common/code_auto_generate_diff.py +101 -10
  17. autocoder/common/code_auto_generate_editblock.py +103 -9
  18. autocoder/common/code_auto_generate_strict_diff.py +99 -9
  19. autocoder/common/code_auto_merge.py +8 -0
  20. autocoder/common/code_auto_merge_diff.py +8 -0
  21. autocoder/common/code_auto_merge_editblock.py +7 -0
  22. autocoder/common/code_auto_merge_strict_diff.py +5 -0
  23. autocoder/common/code_modification_ranker.py +9 -3
  24. autocoder/common/command_completer.py +12 -0
  25. autocoder/common/command_generator.py +5 -4
  26. autocoder/common/git_utils.py +86 -63
  27. autocoder/common/stream_out_type.py +8 -1
  28. autocoder/common/utils_code_auto_generate.py +29 -3
  29. autocoder/dispacher/__init__.py +18 -19
  30. autocoder/dispacher/actions/action.py +0 -132
  31. autocoder/index/filter/quick_filter.py +6 -3
  32. autocoder/memory/__init__.py +7 -0
  33. autocoder/memory/active_context_manager.py +649 -0
  34. autocoder/memory/active_package.py +469 -0
  35. autocoder/memory/async_processor.py +161 -0
  36. autocoder/memory/directory_mapper.py +67 -0
  37. autocoder/utils/auto_coder_utils/chat_stream_out.py +5 -0
  38. autocoder/utils/project_structure.py +35 -1
  39. autocoder/version.py +1 -1
  40. {auto_coder-0.1.305.dist-info → auto_coder-0.1.307.dist-info}/LICENSE +0 -0
  41. {auto_coder-0.1.305.dist-info → auto_coder-0.1.307.dist-info}/WHEEL +0 -0
  42. {auto_coder-0.1.305.dist-info → auto_coder-0.1.307.dist-info}/entry_points.txt +0 -0
  43. {auto_coder-0.1.305.dist-info → auto_coder-0.1.307.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: auto-coder
3
- Version: 0.1.305
3
+ Version: 0.1.307
4
4
  Summary: AutoCoder: AutoCoder
5
5
  Author: allwefantasy
6
6
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
@@ -1,26 +1,26 @@
1
1
  autocoder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- autocoder/auto_coder.py,sha256=HWRWa5Emg1KH0Qa9OLHOhe6fTO9epodO7EUejnEVPGs,66022
2
+ autocoder/auto_coder.py,sha256=ifhdnd39tOIDu_4LdYTxjVCnwmpDoOC90RRwD8bhIKU,65983
3
3
  autocoder/auto_coder_lang.py,sha256=Rtupq6N3_HT7JRhDKdgCBcwRaiAnyCOR_Gsp4jUomrI,3229
4
4
  autocoder/auto_coder_rag.py,sha256=5TtAfbEBwyt-cB4WcI8eQ1G3AuKij0056wFYRViDhLs,34036
5
5
  autocoder/auto_coder_rag_client_mcp.py,sha256=QRxUbjc6A8UmDMQ8lXgZkjgqtq3lgKYeatJbDY6rSo0,6270
6
6
  autocoder/auto_coder_rag_mcp.py,sha256=-RrjNwFaS2e5v8XDIrKR-zlUNUE8UBaeOtojffBrvJo,8521
7
- autocoder/auto_coder_runner.py,sha256=8QziYc2y3ngZSYRHTQ2KbXSG8iQr9_1U_QrsMsSWPXw,100790
7
+ autocoder/auto_coder_runner.py,sha256=bvd1UXYzVT2L-I2ZCkdxy9Ap8P2Q6F2JD-F7QLvaIPc,106545
8
8
  autocoder/auto_coder_server.py,sha256=E3Z829TPSooRSNhuh3_x9yaZi0f5G0Lm0ntoZhjGaoQ,20576
9
9
  autocoder/benchmark.py,sha256=Ypomkdzd1T3GE6dRICY3Hj547dZ6_inqJbBJIp5QMco,4423
10
- autocoder/chat_auto_coder.py,sha256=iDsxUt6RnW5ETSTprZAWLTXNrktdMec-r3AZyV8UJ4g,24784
11
- autocoder/chat_auto_coder_lang.py,sha256=-vyKq02RGn6N275YA06JZqXpfJkNq6PNjQ8wy4MmITE,20833
10
+ autocoder/chat_auto_coder.py,sha256=Cp5_m3pCxEDcRrVG1uojTfD8xecdl9FvYtD948TvLsg,25223
11
+ autocoder/chat_auto_coder_lang.py,sha256=p1SUPw1_YBHK69yNViXr6iFhHL-PjFnrXExA2mXJ5ko,21655
12
12
  autocoder/command_args.py,sha256=9aYJ-AmPxP1sQh6ciw04FWHjSn31f2W9afXFwo8wgx4,30441
13
13
  autocoder/command_parser.py,sha256=fx1g9E6GaM273lGTcJqaFQ-hoksS_Ik2glBMnVltPCE,10013
14
14
  autocoder/lang.py,sha256=U6AjVV8Rs1uLyjFCZ8sT6WWuNUxMBqkXXIOs4S120uk,14511
15
15
  autocoder/models.py,sha256=AyoZ-Pzy0oyYUmWCxOIRiOImsqboSfRET7LO9-UOuxI,11172
16
16
  autocoder/run_context.py,sha256=IUfSO6_gp2Wt1blFWAmOpN0b0nDrTTk4LmtCYUBIoro,1643
17
- autocoder/version.py,sha256=5GWW6mtaPl30mzqFO3ZxXUWEcruPKj3ItmKpxg9QBvQ,23
17
+ autocoder/version.py,sha256=SL-SjrRE3j5Bdry_MqdGwfa7ZysXlPPGduCZPe8eo98,23
18
18
  autocoder/agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
- autocoder/agent/auto_demand_organizer.py,sha256=NWSAEsEk94vT3lGjfo25kKLMwYdPcpy9e-i21txPasQ,6942
20
- autocoder/agent/auto_filegroup.py,sha256=CW7bqp0FW1GIEMnl-blyAc2UGT7O9Mom0q66ITz1ckM,6635
19
+ autocoder/agent/auto_demand_organizer.py,sha256=URAq0gSEiHeV_W4zwhOI_83kHz0Ryfj1gcfh5jwCv_w,6501
20
+ autocoder/agent/auto_filegroup.py,sha256=pBsAkBcpFTff-9L5OwI8xhf2xPKpl-aZwz-skF2B6dc,6296
21
21
  autocoder/agent/auto_guess_query.py,sha256=rDSdhpPHcOGE5MuDXvIrhCXAPR4ARS1LqpyoLsx2Jhw,11374
22
- autocoder/agent/auto_learn_from_commit.py,sha256=YtiMkdcZ29etZxwU5Zir2LFnvfJlwEbpAaW_JYSa4nk,11465
23
- autocoder/agent/auto_review_commit.py,sha256=rFADQbBikC8y9GTYXIvT6HONR26pLfrwoqOOhEiL7Ok,13262
22
+ autocoder/agent/auto_learn_from_commit.py,sha256=edD4GQJyO2qvVnTKyldeswWoNeKe1Aaua6ieJzlGlFI,10662
23
+ autocoder/agent/auto_review_commit.py,sha256=mHi26sU4gJAsutqJyLyXfg7DfNZJNt-H7_2a-a8pLEQ,10563
24
24
  autocoder/agent/auto_tool.py,sha256=DBzip-P_T6ZtT2eHexPcusmKYD0h7ufzp7TLwXAY10E,11554
25
25
  autocoder/agent/coder.py,sha256=x6bdJwDuETGg9ebQnYlUWCxCtQcDGg73LtI6McpWslQ,72034
26
26
  autocoder/agent/designer.py,sha256=EpRbzO58Xym3GrnppIT1Z8ZFAlnNfgzHbIzZ3PX-Yv8,27037
@@ -28,33 +28,33 @@ autocoder/agent/planner.py,sha256=SZTSZHxHzDmuWZo3K5fs79RwvJLWurg-nbJRRNbX65o,91
28
28
  autocoder/agent/project_reader.py,sha256=tWLaPoLw1gI6kO_NzivQj28KbobU2ceOLuppHMbfGl8,18234
29
29
  autocoder/chat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
30
  autocoder/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
- autocoder/commands/auto_command.py,sha256=mreV3kJTo1QwaM7kWY9kfol569pQTb8EHFq53B6BugI,62501
31
+ autocoder/commands/auto_command.py,sha256=fZ4TNU4YA9qdoVHmZX0rb6sV_N-DEcgSLaC5s3PGSHA,64200
32
32
  autocoder/commands/auto_web.py,sha256=Cc0eb6JN3SvFy3GD_lpSLvIqj7F1eFDTcwg1t-zDcKg,39024
33
33
  autocoder/commands/tools.py,sha256=uSPyEcx6o1upuw6clHdL4yeqoXbywnvCxAPo2mt5rJk,28117
34
34
  autocoder/common/JupyterClient.py,sha256=O-wi6pXeAEYhAY24kDa0BINrLYvKS6rKyWe98pDClS0,2816
35
35
  autocoder/common/ShellClient.py,sha256=fM1q8t_XMSbLBl2zkCNC2J9xuyKN3eXzGm6hHhqL2WY,2286
36
- autocoder/common/__init__.py,sha256=PDukO4-iFDdPUjMqsKVW2b055YpgWl1Oa4nJzeFoY3c,13931
37
- autocoder/common/action_yml_file_manager.py,sha256=q0QBlptWtR9DhqguMBZJfHmmTP9fVGjI5DdDer29sis,16109
36
+ autocoder/common/__init__.py,sha256=sIbE0Gm30MkCmZ9ClQeKx1Hw-vjdcVF65hO5TschS1Y,14070
37
+ autocoder/common/action_yml_file_manager.py,sha256=w-422xnvOfhf3MFxNLCZuAEUDa8RrYX12ngHs-fsH0k,17358
38
38
  autocoder/common/anything2images.py,sha256=0ILBbWzY02M-CiWB-vzuomb_J1hVdxRcenAfIrAXq9M,25283
39
39
  autocoder/common/anything2img.py,sha256=iZQmg8srXlD7N5uGl5b_ONKJMBjYoW8kPmokkG6ISF0,10118
40
40
  autocoder/common/audio.py,sha256=Kn9nWKQddWnUrAz0a_ZUgjcu4VUU_IcZBigT7n3N3qc,7439
41
- autocoder/common/auto_coder_lang.py,sha256=NSVg3pJldxoyfqxD68mtj6VDsx-Dn-lCvEcPunmYKzM,36972
41
+ autocoder/common/auto_coder_lang.py,sha256=ZE9HSvSNM8w8ZZosdyA4CHL8wM3dErSmRWshWdpl_Gw,36982
42
42
  autocoder/common/auto_configure.py,sha256=D4N-fl9v8bKM5-Ds-uhkC2uGDmHH_ZjLJ759F8KXMKs,13129
43
43
  autocoder/common/buildin_tokenizer.py,sha256=L7d5t39ZFvUd6EoMPXUhYK1toD0FHlRH1jtjKRGokWU,1236
44
44
  autocoder/common/chunk_validation.py,sha256=BrR_ZWavW8IANuueEE7hS8NFAwEvm8TX34WnPx_1hs8,3030
45
45
  autocoder/common/cleaner.py,sha256=NU72i8C6o9m0vXExab7nao5bstBUsfJFcj11cXa9l4U,1089
46
46
  autocoder/common/code_auto_execute.py,sha256=4KXGmiGObr_B1d6tzV9dwS6MifCSc3Gm4j2d6ildBXQ,6867
47
- autocoder/common/code_auto_generate.py,sha256=i0f0BPTvt8QN5-arC2PqfMs4sukGJqFw58ERFET6vUE,13091
48
- autocoder/common/code_auto_generate_diff.py,sha256=EYGHf24fVAk3M8kXllXukdUvzo2I2Fb8qNrTiU_Qtug,18759
49
- autocoder/common/code_auto_generate_editblock.py,sha256=1XmoLZl-XrrPOyHkSfqe0pOxi0Lp4d69oDQX6zzqs_c,20523
50
- autocoder/common/code_auto_generate_strict_diff.py,sha256=68fAks4S6Hz0wAeXrdI1PjdeCiy0gXRhgEeIlgxB04E,17539
51
- autocoder/common/code_auto_merge.py,sha256=6XSJbY6oAKPFoeYLbEyVDFH3kqeXCAJXcqK-olvlZWg,9454
52
- autocoder/common/code_auto_merge_diff.py,sha256=FhgYKSNprZhdEXdrVyQdbpofduD_aCKFTXvAvHDnP5M,18764
53
- autocoder/common/code_auto_merge_editblock.py,sha256=5iSV5IiZKr5LHtw0TO_2ALPf8F9sz7pHi9dHiuRuB9s,21223
54
- autocoder/common/code_auto_merge_strict_diff.py,sha256=M0tTA0QKfY4qoihgH8ua5h8UJgp1Ut-VAR8DV0cia5k,12915
55
- autocoder/common/code_modification_ranker.py,sha256=e1i8oNPN_PfG4O8HQnQWxh9tyOd-ur6jFTXfkHPVXYo,13152
56
- autocoder/common/command_completer.py,sha256=xuCxYGKDccaozmzB6p3q0QI6mlzyM180g9mnVG5zvIk,35284
57
- autocoder/common/command_generator.py,sha256=t1o1d7xEyfnPvY_MpG5usyx0eKW7WCUR0urKoqCex60,2761
47
+ autocoder/common/code_auto_generate.py,sha256=mxCPG-RC36q5POPMozPytjJcK0ExUeyau7b9ZWWScps,17228
48
+ autocoder/common/code_auto_generate_diff.py,sha256=lddReDQzJts25x55YDbFWJBJ_n9OzsLkyQ-cc1DFw1M,23095
49
+ autocoder/common/code_auto_generate_editblock.py,sha256=YfXuSYogJ5YoHTsx6LN5pPskZPop-noNViiDSRACOYU,24988
50
+ autocoder/common/code_auto_generate_strict_diff.py,sha256=cKCcDfVADSbkwPMWmHGhRjzKutieEw80NjFjwZbFudw,21990
51
+ autocoder/common/code_auto_merge.py,sha256=WaU-T-ZVn3QDaA_SrdkHciUPKDcTfVa-IbhHKBYEv5w,9961
52
+ autocoder/common/code_auto_merge_diff.py,sha256=DcljWrtlejq2cb9Gj-jBjvUQzRbCE2uMNGg8SBOhEnk,19271
53
+ autocoder/common/code_auto_merge_editblock.py,sha256=pLgs1HsS4mRkO2cm7T18u4w8T3PjSMxqNbJZ4LHnnWI,21765
54
+ autocoder/common/code_auto_merge_strict_diff.py,sha256=C35pFxhkgypsm50VDAFOBAT6YXMtzKTvIpEUH1GjZZg,13209
55
+ autocoder/common/code_modification_ranker.py,sha256=Ld3wtjV10zW7lN_L3bKEsvi7RvAleB8r1DD9eLmVnx4,13462
56
+ autocoder/common/command_completer.py,sha256=jBFi8Y1xWmMcxwdDz6Gs7r8ADFPb7eRr9egWU0vLxLo,35787
57
+ autocoder/common/command_generator.py,sha256=YwB_E818vx0fQDOpLD61GivsSgLnrIoxKrY22ka49JU,2797
58
58
  autocoder/common/command_templates.py,sha256=WAixVjue5QmCFAD13K4ElfcOEjdeGr8tFb0atDAbEoo,8658
59
59
  autocoder/common/computer_use.py,sha256=Z5RL-DgkcbF55YDsqnJ37loXGcm_1tzTheukjTTayJM,35816
60
60
  autocoder/common/conf_import_export.py,sha256=w__WsIobe6nmsGns2pV-laU7R5ZvtQNuIbXebxhbY7A,3967
@@ -63,7 +63,7 @@ autocoder/common/const.py,sha256=eTjhjh4Aj4CUzviJ81jaf3Y5cwqsLATySn2wJxaS6RQ,291
63
63
  autocoder/common/context_pruner.py,sha256=HlU5BmxpCX7uVTJUsTFLlXvkwcOQuidI9uCKZaFxh6s,19874
64
64
  autocoder/common/conversation_pruner.py,sha256=pzmrQEa7pFzA66eYSS_h7VqP6ZwUABeooDQzm0PGu0A,5770
65
65
  autocoder/common/files.py,sha256=nPiKcnUcYZbSUn3TskKeTVnAxCJRtuehPuB_5d2imX8,4618
66
- autocoder/common/git_utils.py,sha256=EK8gekbXsG6BNDVrd1Nsan_7kJ71dd8_w9FiOFxjsVI,26276
66
+ autocoder/common/git_utils.py,sha256=yxV-eYYwsncNpVs07Nk61506FFpG2REC43l6ppFCYWM,27081
67
67
  autocoder/common/global_cancel.py,sha256=TyjYQPESwo04D1BOTmC9hH7IbkKDDM-b2zPacEHGIQ8,3264
68
68
  autocoder/common/image_to_page.py,sha256=yWiTJQ49Lm3j0FngiJhQ9u7qayqE_bOGb8Rk0TmSWx0,14123
69
69
  autocoder/common/index_import_export.py,sha256=h758AYY1df6JMTKUXYmMkSgxItfymDt82XT7O-ygEuw,4565
@@ -82,11 +82,11 @@ autocoder/common/search.py,sha256=245iPFgWhMldoUK3CqCP89ltaxZiNPK73evoG6Fp1h8,16
82
82
  autocoder/common/search_replace.py,sha256=GphFkc57Hb673CAwmbiocqTbw8vrV7TrZxtOhD0332g,22147
83
83
  autocoder/common/shells.py,sha256=elminFpNosnV0hsEUcsugDxlGO8NfH96uah-8bkaBvA,19929
84
84
  autocoder/common/stats_panel.py,sha256=wGl9O45pjVVDxhNumLv4_NfLYSlUP_18Tw4hcJSjw50,4596
85
- autocoder/common/stream_out_type.py,sha256=F0fvsjE2LxQD8HKtyI1UfSbrN1vK0m_5Qp3se9GYMGs,187
85
+ autocoder/common/stream_out_type.py,sha256=uNHRg-1my6CxcPzQM6pACrYpTZbxOenVT8aLxnruv2w,333
86
86
  autocoder/common/sys_prompt.py,sha256=JlexfjZt554faqbgkCmzOJqYUzDHfbnxly5ugFfHfEE,26403
87
87
  autocoder/common/text.py,sha256=KGRQq314GHBmY4MWG8ossRoQi1_DTotvhxchpn78c-k,1003
88
88
  autocoder/common/types.py,sha256=PXTETrsTvhLE49jqAeUKGySvxBN9pjeyCgRHLDYdd9U,664
89
- autocoder/common/utils_code_auto_generate.py,sha256=oiBjdCgdcQErfhMozFdHxkU84WmDo2euBA86yezha-g,3597
89
+ autocoder/common/utils_code_auto_generate.py,sha256=Tvb3Mqxedj0Jhi0faKyWvILuNCty9fZi341fyIs33tA,4550
90
90
  autocoder/common/mcp_servers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
91
  autocoder/common/mcp_servers/mcp_server_gpt4o_mini_search.py,sha256=TApShxgoozLluobXHOK1-oAE1zm0-9jdRoPLQB1qwMI,5688
92
92
  autocoder/common/mcp_servers/mcp_server_perplexity.py,sha256=CIC26UkfH1lYoVCjfyY5xGGYVx8h0oz0Uj1c7YJ3OPw,5560
@@ -94,9 +94,9 @@ autocoder/data/byzerllm.md,sha256=SGCMpEaUQ0ysPxQsgzyyp5sgvEr8dZsxEGAfVcPBIq0,47
94
94
  autocoder/data/tokenizer.json,sha256=7Lb5_DaYlDRvBRH0B0ynXO5c1fOwbQLxujX805-OEh0,7847602
95
95
  autocoder/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
96
  autocoder/db/store.py,sha256=tFT66bP2ZKIqZip-uhLkHRSLaaOAUUDZfozJwcqix3c,1908
97
- autocoder/dispacher/__init__.py,sha256=YoA64dIxnx4jcE1pwSfg81sjkQtjDkhddkfac1-cMWo,1230
97
+ autocoder/dispacher/__init__.py,sha256=GTGpU9KbyAu3QMsbecnETYHMoIDBfKKP8iEVsU8gKcg,957
98
98
  autocoder/dispacher/actions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
- autocoder/dispacher/actions/action.py,sha256=Bc_6Iwcd7KhNM6jbMB9zUt3uhzJz8QWRCsO0tfnz3OI,27865
99
+ autocoder/dispacher/actions/action.py,sha256=hidiI3CWxHBjjVyJZseWRsiXku5W5jX0mdRV1Ok-M7E,22225
100
100
  autocoder/dispacher/actions/copilot.py,sha256=2nQzKt8Sr40mIDOizZWyl4ekCwaHYklvgGlVfvhOlFM,13106
101
101
  autocoder/dispacher/actions/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
102
102
  autocoder/dispacher/actions/plugins/action_regex_project.py,sha256=vH-O0rM2ig-5u-n-hlX1SvwQW8IjsGSl-dC4DUAwfII,7632
@@ -115,7 +115,12 @@ autocoder/index/symbols_utils.py,sha256=_EP7E_qWXxluAxq3FGZLlLfdrfwx3FmxCdulI8VG
115
115
  autocoder/index/types.py,sha256=a2s_KV5FJlq7jqA2ELSo9E1sjuLwDB-JJYMhSpzBAhU,596
116
116
  autocoder/index/filter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
117
  autocoder/index/filter/normal_filter.py,sha256=MI-8xdXCrniaxYCHVTLkq5tafvcUiauD3LN0b3ymRXI,8361
118
- autocoder/index/filter/quick_filter.py,sha256=QzBCBRuvcnoF-f3nzXXOzrrbCKz0MtMvQusDgkmHzi8,43171
118
+ autocoder/index/filter/quick_filter.py,sha256=ozESEgy506FQ5ecjOumyo4D_KMrterB1QLmnVtiyOiM,43264
119
+ autocoder/memory/__init__.py,sha256=5FeGvsesRViYL4BkFiHw9SdlyHeWlqALpTyqOpfnBRw,179
120
+ autocoder/memory/active_context_manager.py,sha256=7f7DznnLXbXH6yptN8rOSSJcre0bSJ2dU9mM9L6bvno,27106
121
+ autocoder/memory/active_package.py,sha256=CyfqZSgNucE5mGQH5JGHTE8lTU0KjFGkW2YN8vl9SoI,17480
122
+ autocoder/memory/async_processor.py,sha256=htHzLGupw9IHQAEdLe2AEaALZSItPi3AltDt8FMTRHk,4643
123
+ autocoder/memory/directory_mapper.py,sha256=BXHblOdRpeZb7URDECALp9uN5oi91KmkW9g_UaWFuZY,2513
119
124
  autocoder/plugins/__init__.py,sha256=uc8UNSAVb9uQvr5zUSS-Xu_RhrdbO2i3w2NhkrVtODM,43023
120
125
  autocoder/plugins/dynamic_completion_example.py,sha256=dDTeISsGqcWjxY_PzbFSZ4Q7_QwYUcuHUdWJT8x7q-4,4693
121
126
  autocoder/plugins/git_helper_plugin.py,sha256=nKQWkU-nQ39A4WC8nC8KI-x68VjwVARQvtrtQQ1GTMI,8386
@@ -181,7 +186,7 @@ autocoder/utils/model_provider_selector.py,sha256=h1eVf4F7qfSOdJbtdwv7_xfIRcNBk3
181
186
  autocoder/utils/multi_turn.py,sha256=unK9OpqVRbK6uIcTKXgggX2wNmyj7s5eyEAQ2xUwHoM,88
182
187
  autocoder/utils/operate_config_api.py,sha256=K1lQxXNHiAYTgRDS2EGpWmjdJTrQaeP16RUWS0DIorw,5841
183
188
  autocoder/utils/print_table.py,sha256=ZMRhCA9DD0FUfKyJBWd5bDdj1RrtPtgOMWSJwtvZcLs,403
184
- autocoder/utils/project_structure.py,sha256=3X94fkXC1aMztHaLwKGxucE3s_1hD4gFarg4vvN-pfE,10313
189
+ autocoder/utils/project_structure.py,sha256=-RxWM30a9xXIKLwH3mBNAXdrU_0uMQjfixWXiOnfdkU,11375
185
190
  autocoder/utils/queue_communicate.py,sha256=buyEzdvab1QA4i2QKbq35rG5v_9x9PWVLWWMTznWcYM,6832
186
191
  autocoder/utils/request_event_queue.py,sha256=r3lo5qGsB1dIjzVQ05dnr0z_9Z3zOkBdP1vmRciKdi4,2095
187
192
  autocoder/utils/request_queue.py,sha256=nwp6PMtgTCiuwJI24p8OLNZjUiprC-TsefQrhMI-yPE,3889
@@ -191,11 +196,11 @@ autocoder/utils/tests.py,sha256=BqphrwyycGAvs-5mhH8pKtMZdObwhFtJ5MC_ZAOiLq8,1340
191
196
  autocoder/utils/thread_utils.py,sha256=VQCDrkTdij_5-01FE_X2Fprz_0uA-GahUY4h7DnAlw0,5426
192
197
  autocoder/utils/types.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
193
198
  autocoder/utils/auto_coder_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
194
- autocoder/utils/auto_coder_utils/chat_stream_out.py,sha256=A1ka4FVf_SKH7T6pez5R460qvGdEquzfIAjRR_TRxF8,15010
199
+ autocoder/utils/auto_coder_utils/chat_stream_out.py,sha256=xuBeWD0YOckqRo8JB1WkVIMOYH6c24m7JfV4svBfPDo,15113
195
200
  autocoder/utils/chat_auto_coder_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
196
- auto_coder-0.1.305.dist-info/LICENSE,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
197
- auto_coder-0.1.305.dist-info/METADATA,sha256=IM7ILt4a0lg_Lq7SHGZK0T0oPsi272WyLa9gLhSLjcE,2721
198
- auto_coder-0.1.305.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
199
- auto_coder-0.1.305.dist-info/entry_points.txt,sha256=0nzHtHH4pNcM7xq4EBA2toS28Qelrvcbrr59GqD_0Ak,350
200
- auto_coder-0.1.305.dist-info/top_level.txt,sha256=Jqc0_uJSw2GwoFQAa9iJxYns-2mWla-9ok_Y3Gcznjk,10
201
- auto_coder-0.1.305.dist-info/RECORD,,
201
+ auto_coder-0.1.307.dist-info/LICENSE,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
202
+ auto_coder-0.1.307.dist-info/METADATA,sha256=3zdlrR3qOtRYS5giLuNFcXbUERBGTgE4hKVtz3CgZ7I,2721
203
+ auto_coder-0.1.307.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
204
+ auto_coder-0.1.307.dist-info/entry_points.txt,sha256=0nzHtHH4pNcM7xq4EBA2toS28Qelrvcbrr59GqD_0Ak,350
205
+ auto_coder-0.1.307.dist-info/top_level.txt,sha256=Jqc0_uJSw2GwoFQAa9iJxYns-2mWla-9ok_Y3Gcznjk,10
206
+ auto_coder-0.1.307.dist-info/RECORD,,
@@ -6,6 +6,8 @@ import byzerllm
6
6
  import pydantic
7
7
  import git
8
8
 
9
+ from autocoder.common.action_yml_file_manager import ActionYmlFileManager
10
+
9
11
 
10
12
  class DemandItem(pydantic.BaseModel):
11
13
  """单个需求项"""
@@ -44,6 +46,7 @@ class AutoDemandOrganizer:
44
46
  file_size_limit: 最多分析多少历史任务
45
47
  """
46
48
  self.project_dir = project_dir
49
+ self.action_file_manager = ActionYmlFileManager(project_dir)
47
50
  self.actions_dir = os.path.join(project_dir, "actions")
48
51
  self.llm = llm
49
52
  self.file_size_limit = file_size_limit
@@ -162,26 +165,16 @@ class AutoDemandOrganizer:
162
165
 
163
166
  if query and urls:
164
167
  commit_diff = ""
165
- if not self.skip_diff:
166
- # 计算文件的MD5用于匹配commit
167
- import hashlib
168
- file_md5 = hashlib.md5(open(yaml_path, 'rb').read()).hexdigest()
169
- response_id = f"auto_coder_{yaml_file}_{file_md5}"
170
- # 查找对应的commit
171
- try:
172
- for commit in repo.iter_commits():
173
- if response_id in commit.message:
174
- if commit.parents:
175
- parent = commit.parents[0]
176
- commit_diff = repo.git.diff(
177
- parent.hexsha, commit.hexsha)
178
- else:
179
- commit_diff = repo.git.show(commit.hexsha)
180
- break
181
- except git.exc.GitCommandError as e:
182
- logger.error(f"Git命令执行错误: {str(e)}")
183
- except Exception as e:
184
- logger.error(f"获取commit diff时出错: {str(e)}")
168
+ if not self.skip_diff:
169
+ commit_id = self.action_file_manager.get_commit_id_from_file(yaml_file)
170
+ commit = repo.commit(commit_id)
171
+ if commit:
172
+ if commit.parents:
173
+ parent = commit.parents[0]
174
+ commit_diff = repo.git.diff(
175
+ parent.hexsha, commit.hexsha)
176
+ else:
177
+ commit_diff = repo.git.show(commit.hexsha)
185
178
 
186
179
  querie_with_urls_and_diffs.append((query, urls, commit_diff))
187
180
 
@@ -4,6 +4,7 @@ import yaml
4
4
  from loguru import logger
5
5
  import byzerllm
6
6
  import pydantic
7
+ from autocoder.common.action_yml_file_manager import ActionYmlFileManager
7
8
 
8
9
 
9
10
  class FileGroup(pydantic.BaseModel):
@@ -40,6 +41,7 @@ class AutoFileGroup:
40
41
  actions_dir: 包含YAML文件的目录
41
42
  """
42
43
  self.project_dir = project_dir
44
+ self.action_manager = ActionYmlFileManager(project_dir)
43
45
  self.actions_dir = os.path.join(project_dir, "actions")
44
46
  self.llm = llm
45
47
  self.file_size_limit = file_size_limit
@@ -152,23 +154,15 @@ class AutoFileGroup:
152
154
  commit_diff = ""
153
155
  if not self.skip_diff:
154
156
  # 计算文件的MD5用于匹配commit
155
- file_md5 = hashlib.md5(open(yaml_path, 'rb').read()).hexdigest()
156
- response_id = f"auto_coder_{yaml_file}_{file_md5}"
157
+ commit_id = self.action_manager.get_commit_id_from_file(yaml_file)
158
+ commit = repo.commit(commit_id)
157
159
  # 查找对应的commit
158
- try:
159
- for commit in repo.iter_commits():
160
- if response_id in commit.message:
161
- if commit.parents:
162
- parent = commit.parents[0]
163
- commit_diff = repo.git.diff(
164
- parent.hexsha, commit.hexsha)
165
- else:
166
- commit_diff = repo.git.show(commit.hexsha)
167
- break
168
- except git.exc.GitCommandError as e:
169
- logger.error(f"Git命令执行错误: {str(e)}")
170
- except Exception as e:
171
- logger.error(f"获取commit diff时出错: {str(e)}")
160
+ if commit and commit.parents:
161
+ parent = commit.parents[0]
162
+ commit_diff = repo.git.diff(
163
+ parent.hexsha, commit.hexsha)
164
+ else:
165
+ commit_diff = repo.git.show(commit.hexsha)
172
166
 
173
167
  querie_with_urls_and_diffs.append((query, urls, commit_diff))
174
168
 
@@ -37,6 +37,7 @@ class AutoLearnFromCommit:
37
37
  skip_diff: 是否跳过获取 diff 信息
38
38
  """
39
39
  self.project_dir = args.source_dir
40
+ self.args = args
40
41
  self.actions_dir = os.path.join(args.source_dir, "actions")
41
42
  self.llm = llm
42
43
  self.skip_diff = skip_diff
@@ -120,40 +121,30 @@ class AutoLearnFromCommit:
120
121
  if not self.skip_diff:
121
122
  # 使用 ActionManager 获取 commit ID
122
123
  commit_id = self.action_manager.get_commit_id_from_file(action_file)
123
- if commit_id:
124
- try:
125
- for commit in repo.iter_commits():
126
- if commit_id in commit.message:
127
- if commit.parents:
128
- parent = commit.parents[0]
129
- # 获取所有文件的前后内容
130
- for diff_item in parent.diff(commit):
131
- file_path = diff_item.a_path if diff_item.a_path else diff_item.b_path
132
-
133
- # 获取变更前内容
134
- before_content = None
135
- try:
136
- if diff_item.a_blob:
137
- before_content = repo.git.show(f"{parent.hexsha}:{file_path}")
138
- except git.exc.GitCommandError:
139
- pass # 文件可能是新增的
124
+ commit = repo.commit(commit_id)
125
+ if commit and commit.parents:
126
+ parent = commit.parents[0]
127
+ # 获取所有文件的前后内容
128
+ for diff_item in parent.diff(commit):
129
+ file_path = diff_item.a_path if diff_item.a_path else diff_item.b_path
130
+
131
+ # 获取变更前内容
132
+ before_content = None
133
+ try:
134
+ if diff_item.a_blob:
135
+ before_content = repo.git.show(f"{parent.hexsha}:{file_path}")
136
+ except git.exc.GitCommandError:
137
+ pass # 文件可能是新增的
140
138
 
141
- # 获取变更后内容
142
- after_content = None
143
- try:
144
- if diff_item.b_blob:
145
- after_content = repo.git.show(f"{commit.hexsha}:{file_path}")
146
- except git.exc.GitCommandError:
147
- pass # 文件可能被删除
139
+ # 获取变更后内容
140
+ after_content = None
141
+ try:
142
+ if diff_item.b_blob:
143
+ after_content = repo.git.show(f"{commit.hexsha}:{file_path}")
144
+ except git.exc.GitCommandError:
145
+ pass # 文件可能被删除
148
146
 
149
- changes[file_path] = (before_content, after_content)
150
- break
151
- except git.exc.GitCommandError as e:
152
- printer = Printer()
153
- printer.print_in_terminal("git_command_error", style="red", error=str(e))
154
- except Exception as e:
155
- printer = Printer()
156
- printer.print_in_terminal("get_commit_changes_error", style="red", error=str(e))
147
+ changes[file_path] = (before_content, after_content)
157
148
 
158
149
  querie_with_urls_and_changes.append((query, urls, changes))
159
150
 
@@ -267,7 +258,8 @@ class AutoLearnFromCommit:
267
258
  v = stream_chat_with_continue(
268
259
  llm=self.llm,
269
260
  conversations=new_conversations,
270
- llm_config={}
261
+ llm_config={},
262
+ args=self.args
271
263
  )
272
264
  return v, commit_file_name
273
265
  except Exception as e:
@@ -9,6 +9,7 @@ from autocoder.common.printer import Printer
9
9
  from autocoder.common import AutoCoderArgs
10
10
  from autocoder.common.utils_code_auto_generate import stream_chat_with_continue
11
11
  import hashlib
12
+ from autocoder.common.action_yml_file_manager import ActionYmlFileManager
12
13
 
13
14
 
14
15
  def load_yaml_config(yaml_file: str) -> Dict:
@@ -36,10 +37,12 @@ class AutoReviewCommit:
36
37
  skip_diff: 是否跳过获取 diff 信息
37
38
  """
38
39
  self.project_dir = args.source_dir
40
+ self.args = args
39
41
  self.actions_dir = os.path.join(args.source_dir, "actions")
40
42
  self.llm = llm
41
43
  self.skip_diff = skip_diff
42
44
  self.console = console or Console()
45
+ self.action_yml_manager = ActionYmlFileManager(source_dir=args.source_dir)
43
46
 
44
47
  @byzerllm.prompt()
45
48
  def review(self, querie_with_urls_and_changes: List[Tuple[str, List[str], Dict[str, Tuple[str, str]]]], query: str) -> Generator[str,None,None]:
@@ -140,66 +143,16 @@ class AutoReviewCommit:
140
143
  action_files = sorted(action_files, key=get_seq)
141
144
  action_files.reverse()
142
145
 
146
+ if not action_files:
147
+ return []
148
+
143
149
  action_file = action_files[0]
144
-
145
150
  querie_with_urls_and_changes = []
146
- repo = git.Repo(self.project_dir)
147
-
148
- # 收集所有query、urls和对应的文件变化
149
- for yaml_file in [action_file]:
150
- yaml_path = os.path.join(self.actions_dir, yaml_file)
151
- config = load_yaml_config(yaml_path)
152
151
 
153
- if not config:
154
- continue
155
-
156
- query = config.get('query', '')
157
- urls = config.get('urls', [])
158
-
159
- if query:
160
- changes = {}
161
- if not self.skip_diff:
162
- # 计算文件的MD5用于匹配commit
163
- with open(yaml_path, 'r', encoding='utf-8') as f:
164
- yaml_content = f.read()
165
- file_md5 = hashlib.md5(yaml_content.encode("utf-8")).hexdigest()
166
- response_id = f"auto_coder_{yaml_file}_{file_md5}"
167
- # 查找对应的commit
168
- try:
169
- for commit in repo.iter_commits():
170
- if response_id in commit.message:
171
- if commit.parents:
172
- parent = commit.parents[0]
173
- # 获取所有文件的前后内容
174
- for diff_item in parent.diff(commit):
175
- file_path = diff_item.a_path if diff_item.a_path else diff_item.b_path
176
-
177
- # 获取变更前内容
178
- before_content = None
179
- try:
180
- if diff_item.a_blob:
181
- before_content = repo.git.show(f"{parent.hexsha}:{file_path}")
182
- except git.exc.GitCommandError:
183
- pass # 文件可能是新增的
184
-
185
- # 获取变更后内容
186
- after_content = None
187
- try:
188
- if diff_item.b_blob:
189
- after_content = repo.git.show(f"{commit.hexsha}:{file_path}")
190
- except git.exc.GitCommandError:
191
- pass # 文件可能被删除
192
-
193
- changes[file_path] = (before_content, after_content)
194
- break
195
- except git.exc.GitCommandError as e:
196
- printer = Printer()
197
- printer.print_in_terminal("git_command_error", style="red", error=str(e))
198
- except Exception as e:
199
- printer = Printer()
200
- printer.print_in_terminal("get_commit_changes_error", style="red", error=str(e))
201
-
202
- querie_with_urls_and_changes.append((query, urls, changes))
152
+ # 使用ActionYmlFileManager获取提交变更
153
+ changes = self.action_yml_manager.get_commit_changes(action_file)
154
+ if changes:
155
+ querie_with_urls_and_changes = changes
203
156
 
204
157
  return querie_with_urls_and_changes
205
158
 
@@ -288,14 +241,11 @@ class AutoReviewCommit:
288
241
  printer = Printer()
289
242
  commit_file_name = None
290
243
  if commit_id:
244
+ # 利用ActionYmlFileManager获取文件名
291
245
  repo = git.Repo(self.project_dir)
292
246
  commit = repo.commit(commit_id)
293
- # auto_coder_000000001926_chat_action.yml_88614d5bd4046a068786c252fbc39c13
294
- msg = commit.message
295
- commit_file_info = msg.split("_")[0]
296
- if commit_file_info.startswith("auto_coder_"):
297
- commit_file_name = "_".join(msg.split("_",)[0:-1])
298
-
247
+ commit_file_name = self.action_yml_manager.get_file_name_from_commit_msg(commit.message)
248
+
299
249
  if not commit_file_name:
300
250
  raise ValueError(printer.get_message_from_key_with_format("no_commit_file_name",commit_id=commit_id))
301
251
 
@@ -315,7 +265,8 @@ class AutoReviewCommit:
315
265
  v = stream_chat_with_continue(
316
266
  llm=self.llm,
317
267
  conversations=new_conversations,
318
- llm_config={}
268
+ llm_config={},
269
+ args=self.args
319
270
  )
320
271
  return v
321
272
  except Exception as e:
autocoder/auto_coder.py CHANGED
@@ -27,7 +27,6 @@ from autocoder.utils.rest import HttpDoc
27
27
  from byzerllm.apps.byzer_storage.env import get_latest_byzer_retrieval_lib
28
28
  from autocoder.command_args import parse_args
29
29
  from autocoder.rag.api_server import serve, ServerArgs
30
- from autocoder.utils import open_yaml_file_in_editor, get_last_yaml_file
31
30
  from autocoder.utils.request_queue import (
32
31
  request_queue,
33
32
  RequestValue,
@@ -120,12 +119,10 @@ def main(input_args: Optional[List[str]] = None):
120
119
  # args.request_id = str(uuid.uuid4())
121
120
 
122
121
  if raw_args.command == "revert":
123
- repo_path = args.source_dir
124
-
125
122
  file_name = os.path.basename(args.file)
126
- revert_result = git_utils.revert_changes(
127
- repo_path, f"auto_coder_{file_name}"
128
- )
123
+ action_file_manager = ActionYmlFileManager(source_dir=args.source_dir)
124
+ revert_result = action_file_manager.revert_file(file_name)
125
+
129
126
  if revert_result:
130
127
  print(f"Successfully reverted changes for {args.file}")
131
128
  else:
@@ -945,7 +942,7 @@ def main(input_args: Optional[List[str]] = None):
945
942
 
946
943
  console = Console()
947
944
 
948
- shell_script = generate_shell_script(args.query, llm)
945
+ shell_script = generate_shell_script(args, llm)
949
946
 
950
947
  console.print(
951
948
  Panel(
@@ -1340,7 +1337,8 @@ def main(input_args: Optional[List[str]] = None):
1340
1337
  v = stream_chat_with_continue(
1341
1338
  llm=chat_llm,
1342
1339
  conversations=loaded_conversations,
1343
- llm_config={}
1340
+ llm_config={},
1341
+ args=args
1344
1342
  )
1345
1343
 
1346
1344