jarvis-ai-assistant 0.2.1__py3-none-any.whl → 0.2.3__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.
Files changed (41) hide show
  1. jarvis/__init__.py +1 -1
  2. jarvis/jarvis_agent/jarvis.py +61 -59
  3. jarvis/jarvis_agent/main.py +42 -40
  4. jarvis/jarvis_agent/prompts.py +26 -4
  5. jarvis/jarvis_code_agent/code_agent.py +35 -31
  6. jarvis/jarvis_code_analysis/code_review.py +73 -39
  7. jarvis/jarvis_data/config_schema.json +67 -12
  8. jarvis/jarvis_git_squash/main.py +16 -12
  9. jarvis/jarvis_git_utils/git_commiter.py +25 -20
  10. jarvis/jarvis_methodology/main.py +34 -49
  11. jarvis/jarvis_multi_agent/main.py +28 -23
  12. jarvis/jarvis_platform/ai8.py +31 -22
  13. jarvis/jarvis_platform/kimi.py +31 -61
  14. jarvis/jarvis_platform/tongyi.py +71 -85
  15. jarvis/jarvis_platform/yuanbao.py +44 -50
  16. jarvis/jarvis_platform_manager/main.py +55 -90
  17. jarvis/jarvis_rag/cli.py +79 -23
  18. jarvis/jarvis_rag/query_rewriter.py +61 -12
  19. jarvis/jarvis_rag/rag_pipeline.py +143 -34
  20. jarvis/jarvis_rag/retriever.py +5 -5
  21. jarvis/jarvis_smart_shell/main.py +58 -87
  22. jarvis/jarvis_tools/cli/main.py +120 -153
  23. jarvis/jarvis_tools/generate_new_tool.py +22 -1
  24. jarvis/jarvis_tools/registry.py +1 -7
  25. jarvis/jarvis_tools/search_web.py +12 -10
  26. jarvis/jarvis_utils/config.py +92 -11
  27. jarvis/jarvis_utils/globals.py +29 -8
  28. jarvis/jarvis_utils/http.py +58 -79
  29. jarvis/jarvis_utils/input.py +114 -121
  30. jarvis/jarvis_utils/output.py +1 -1
  31. jarvis/jarvis_utils/utils.py +3 -0
  32. jarvis_ai_assistant-0.2.3.dist-info/METADATA +301 -0
  33. {jarvis_ai_assistant-0.2.1.dist-info → jarvis_ai_assistant-0.2.3.dist-info}/RECORD +37 -40
  34. {jarvis_ai_assistant-0.2.1.dist-info → jarvis_ai_assistant-0.2.3.dist-info}/entry_points.txt +0 -2
  35. jarvis/jarvis_git_details/__init__.py +0 -0
  36. jarvis/jarvis_git_details/main.py +0 -265
  37. jarvis/jarvis_platform/oyi.py +0 -357
  38. jarvis_ai_assistant-0.2.1.dist-info/METADATA +0 -845
  39. {jarvis_ai_assistant-0.2.1.dist-info → jarvis_ai_assistant-0.2.3.dist-info}/WHEEL +0 -0
  40. {jarvis_ai_assistant-0.2.1.dist-info → jarvis_ai_assistant-0.2.3.dist-info}/licenses/LICENSE +0 -0
  41. {jarvis_ai_assistant-0.2.1.dist-info → jarvis_ai_assistant-0.2.3.dist-info}/top_level.txt +0 -0
@@ -1,20 +1,20 @@
1
- jarvis/__init__.py,sha256=7YS_CmhWeXPE4rP8NAcZnRuHXCr7rFpRpDd4pK4v2GQ,73
1
+ jarvis/__init__.py,sha256=XEAMgUO6o_M_mBppz2pFtIaTvKb5tTGUJDlGLoURD6g,73
2
2
  jarvis/jarvis_agent/__init__.py,sha256=BmBbMUsCwe_0znrwxSipaKj-MuOgJTZvLbyKzBFfpic,22559
3
3
  jarvis/jarvis_agent/builtin_input_handler.py,sha256=Qs4LAr4xdKLBJpQE81YP4CkucAop86ms0iVoKa1nnso,2468
4
4
  jarvis/jarvis_agent/edit_file_handler.py,sha256=ml1o-BE2Ca1-ybPlKuhstLQYwdJag39o0_-PXTUvFaE,11646
5
- jarvis/jarvis_agent/jarvis.py,sha256=dRJWrMbZnxo5g7_5-x9IPypPYynUhMIYBVlqtlOlOb0,7969
6
- jarvis/jarvis_agent/main.py,sha256=ufMQsv1-9wU2E3UAyu48oITwFSIBVFsUfnlhDZ7dWbU,3293
5
+ jarvis/jarvis_agent/jarvis.py,sha256=PQ2dHPWeCAHL4JCk-_oYa26pP2bIWUdokkO-VW7-6h0,8185
6
+ jarvis/jarvis_agent/main.py,sha256=IM9_AsCmTw4QYLp3AMF97kRGctQC2pEIZls6zxZgUSQ,3319
7
7
  jarvis/jarvis_agent/output_handler.py,sha256=P7oWpXBGFfOsWq7cIhS_z9crkQ19ES7qU5pM92KKjAs,1172
8
8
  jarvis/jarvis_agent/prompt_builder.py,sha256=PH1fPDVa8z_RXkoXHJFNDf8PQjUoLNLYwkh2lC__p40,1705
9
- jarvis/jarvis_agent/prompts.py,sha256=e8i-3kaGr96mlzL3UUhQUHFDfbJSoE4xiF9TDksNDm4,7720
9
+ jarvis/jarvis_agent/prompts.py,sha256=VLQtz75X5qExQkSwYlJYQzNLpDMdByr4FaY71POVLMI,8713
10
10
  jarvis/jarvis_agent/protocols.py,sha256=JWnJDikFEuwvFUv7uzXu0ggJ4O9K2FkMnfVCwIJ5REw,873
11
11
  jarvis/jarvis_agent/session_manager.py,sha256=DnvI9rWkVmkyO1XfKZyo9lTn4ajg4ccwzEkoRHFPOJM,2925
12
12
  jarvis/jarvis_agent/shell_input_handler.py,sha256=1IboqdxcJuoIqRpmDU10GugR9fWXUHyCEbVF4nIWbyo,1328
13
13
  jarvis/jarvis_agent/tool_executor.py,sha256=nIq-sPNgrtimtM-IHpN09cWmId8jDzWRdCFoRzXnnoo,1721
14
14
  jarvis/jarvis_code_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- jarvis/jarvis_code_agent/code_agent.py,sha256=YQYeaFx-dlf5p6_vw7T4mmtwyqQkytlxMUWDhF2V3_Y,18659
15
+ jarvis/jarvis_code_agent/code_agent.py,sha256=n0_sOXuGgzSQKLUj64ap0lWqKR67RZPnO3jpl2YD7MI,18681
16
16
  jarvis/jarvis_code_agent/lint.py,sha256=LZPsfyZPMo7Wm7LN4osZocuNJwZx1ojacO3MlF870x8,4009
17
- jarvis/jarvis_code_analysis/code_review.py,sha256=eyezZ64ffiNC8vIHF-BZ1cF9cTnk1NdpuUXfoa-jWpc,30971
17
+ jarvis/jarvis_code_analysis/code_review.py,sha256=3oRxB4Ks2lbnzQpPWFU6cpwpVz1sWtQ7OAT-kwZOUSI,32150
18
18
  jarvis/jarvis_code_analysis/checklists/__init__.py,sha256=LIXAYa1sW3l7foP6kohLWnE98I_EQ0T7z5bYKHq6rJA,78
19
19
  jarvis/jarvis_code_analysis/checklists/c_cpp.py,sha256=9t62bMqs6qTkFSio4SKkj88qyb5ZubWrw3MxJBQ4X1A,1317
20
20
  jarvis/jarvis_code_analysis/checklists/csharp.py,sha256=ShPXrl2_UPAnGaCHAG2wLl90COG3HK2XCSr1UK2dxN4,2420
@@ -35,76 +35,73 @@ jarvis/jarvis_code_analysis/checklists/shell.py,sha256=aRFYhQQvTgbYd-uY5pc8UHIUA
35
35
  jarvis/jarvis_code_analysis/checklists/sql.py,sha256=vR0T6qC7b4dURjJVAd7kSVxyvZEQXPG1Jqc2sNTGp5c,2355
36
36
  jarvis/jarvis_code_analysis/checklists/swift.py,sha256=TPx4I6Gupvs6tSerRKmTSKEPQpOLEbH2Y7LXg1uBgxc,2566
37
37
  jarvis/jarvis_code_analysis/checklists/web.py,sha256=25gGD7pDadZQybNFvALYxWvK0VRjGQb1NVJQElwjyk0,3943
38
- jarvis/jarvis_data/config_schema.json,sha256=XpQ7aaHMW-YCuFrnaAEjMWrnv6a8B7MqGjm2XgrvtgQ,8573
38
+ jarvis/jarvis_data/config_schema.json,sha256=bLzZnGDaQsHfK_o7cSEL-tQzbOgGaeV3Q8scfXkWTf4,10231
39
39
  jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4,sha256=Ijkht27pm96ZW3_3OFE-7xAPtR0YyTWXoRO8_-hlsqc,1681126
40
- jarvis/jarvis_git_details/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
- jarvis/jarvis_git_details/main.py,sha256=DE1DcX-1lvUsb_K-FExpHs3NBRmo5KZb53PGa8QFBOc,8875
42
40
  jarvis/jarvis_git_squash/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
- jarvis/jarvis_git_squash/main.py,sha256=2nwX-Ghphn97Ua0SXPJIxix-rgm_Z9KRkrovjpSklUk,2311
44
- jarvis/jarvis_git_utils/git_commiter.py,sha256=Yir26RyvoToTmkeh1-cFnG3LE3fH7z2njPOK3FIpQDc,12801
41
+ jarvis/jarvis_git_squash/main.py,sha256=8_ADMTGi8Z41mqKCed4zHOd3nZCqEDWfqVLWpnYvCnE,2263
42
+ jarvis/jarvis_git_utils/git_commiter.py,sha256=fJ97nvvDt-0E8E4PbeMvptx_yoJXFAObhaPVb3mjO_g,12676
45
43
  jarvis/jarvis_mcp/__init__.py,sha256=OPMtjD-uq9xAaKCRIDyKIosaFfBe1GBPu1az-mQ0rVM,2048
46
44
  jarvis/jarvis_mcp/sse_mcp_client.py,sha256=AhYLPQb0mE9-6ZQw1JesRNyEy0esJumNEFb5LyzyIn0,22612
47
45
  jarvis/jarvis_mcp/stdio_mcp_client.py,sha256=APYUksYKlMx7AVNODKOLrTkKZPnp4kqTQIYIuNDDKko,11286
48
46
  jarvis/jarvis_mcp/streamable_mcp_client.py,sha256=1OZpsG82U2MLbGuojllJAblFUAMmp1N0i5fsKM4n5Ts,14453
49
- jarvis/jarvis_methodology/main.py,sha256=-PqsWvtpUJkkhiGgV-1JegEnEZBmv8SHnNMNNm_-QQc,11720
47
+ jarvis/jarvis_methodology/main.py,sha256=6QF8hH3vB6rfxim0fPR34uVPf41zVpb4ZLqrFN2qONg,10983
50
48
  jarvis/jarvis_multi_agent/__init__.py,sha256=kCgtAX7VvliyEOQxIj2DvNjRAuh6bpNaOtDn60nzph4,6089
51
- jarvis/jarvis_multi_agent/main.py,sha256=h7VUSwoPrES0XTK8z5kt3XLX1mmcm8UEuFEHQOUWPH4,1696
49
+ jarvis/jarvis_multi_agent/main.py,sha256=EUJCLjiN6ZZkOTmRS13oeTquo3tXD-cdO_QvaEPCK_c,1715
52
50
  jarvis/jarvis_platform/__init__.py,sha256=WLQHSiE87PPket2M50_hHzjdMIgPIBx2VF8JfB_NNRk,105
53
- jarvis/jarvis_platform/ai8.py,sha256=yi7xG8ld4Yrf7drz-uu_JT_XCGYRB0obhygt-jKik8o,10871
51
+ jarvis/jarvis_platform/ai8.py,sha256=uiL1BkONteUB2aXg6kMGSXLLOhzGDl5_SNQYyQzmFNk,11412
54
52
  jarvis/jarvis_platform/base.py,sha256=cfeYB6ldfQH1tz1rroQpmJTLAw8KByKS74qun0pqE1c,9498
55
53
  jarvis/jarvis_platform/human.py,sha256=cSN8Lqf0ts2_pPfS2_v7PaWxQKqcW_3bSmhRTHey7Qo,4674
56
- jarvis/jarvis_platform/kimi.py,sha256=dn_P4EEZvWWCPS67MDbWStsP7n3MN4-Rrc6R7GhJyEg,15436
54
+ jarvis/jarvis_platform/kimi.py,sha256=HzNcdQ3tO2ndHk02mfD9DeeGP7JVFnQ1pbkAVF21jjA,14222
57
55
  jarvis/jarvis_platform/openai.py,sha256=ccGqsU2cFfd5324P7SH1tSmFABpvto8fytmxQGkr3BA,6412
58
- jarvis/jarvis_platform/oyi.py,sha256=GvVooV8ScRqDb9QxJdINtdZwsx6PUIdo1-bt9k0hmqY,12604
59
56
  jarvis/jarvis_platform/registry.py,sha256=1bMy0YZUa8NLzuZlKfC4CBtpa0iniypTxUZk0Hv6g9Y,8415
60
- jarvis/jarvis_platform/tongyi.py,sha256=vSK1b4NhTeHbNhTgGRj4PANXptwCAwitczwK8VXwWwU,22921
61
- jarvis/jarvis_platform/yuanbao.py,sha256=AIGQ0VOD_IAwWLnU9G19OG0XAbHpcJDzVWX2VazsyAI,23092
57
+ jarvis/jarvis_platform/tongyi.py,sha256=22NPrJDrd4Zag2oWlytZ9--vA3hLJhJ2YJ-kM5RwLQ8,22212
58
+ jarvis/jarvis_platform/yuanbao.py,sha256=FbkpMs_hUL8bGJHbWivQEynnU892-5qPsMe0xASGXkI,22673
62
59
  jarvis/jarvis_platform_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
- jarvis/jarvis_platform_manager/main.py,sha256=ysdM-_2vdOorqQiXiJOpZ50ukD5yPmakRHthK-JIl30,18558
60
+ jarvis/jarvis_platform_manager/main.py,sha256=V320cEk2CP-NhmdNr0dED77VOUTJ6ODYL0YXC7wLZzw,17513
64
61
  jarvis/jarvis_platform_manager/service.py,sha256=hQGWQ2qAlzm_C_lNQDuLORQ4rmjR1P1-V3ou7l2Bv0s,13622
65
62
  jarvis/jarvis_rag/__init__.py,sha256=HRTXgnQxDuaE9x-e3r6SYqhJ5d4DSI_rrIxy2IGY6qk,320
66
63
  jarvis/jarvis_rag/cache.py,sha256=Tqx_Oe-AhuWlMXHGHUaIuG6OEHoHBVZq7mL3kldtFFU,2723
67
- jarvis/jarvis_rag/cli.py,sha256=q1W7XWZ7u7oMckqeNUX7YQoiQ3PzT3Rh-FZvTeG_U3I,13159
64
+ jarvis/jarvis_rag/cli.py,sha256=bIQKibp8swJDyfFBXaiX5C20LHN_2W2knO2I-MQp58c,15620
68
65
  jarvis/jarvis_rag/embedding_manager.py,sha256=BoV6Vr_3F4zbjBAOQ1FdEBnJXGPwBkv1IEkdRP9CgFw,3338
69
66
  jarvis/jarvis_rag/llm_interface.py,sha256=eZHibNHD5dFK9yolr3hYNNhAEZUsPA-cIf1uHapI2h8,4338
70
- jarvis/jarvis_rag/query_rewriter.py,sha256=JM1Q23zZISze77BleRgTPgNAtLUtLAXkEo3G70kaTK8,2190
71
- jarvis/jarvis_rag/rag_pipeline.py,sha256=9yeNRv6qOS2zo7o0b0u3gFmiW_XSivesvPKVJ8e5DlE,6209
67
+ jarvis/jarvis_rag/query_rewriter.py,sha256=rmXj-j3jjsOR-Dj9Hk5exfCJqZ4uCxMFfvybzurpj5w,4047
68
+ jarvis/jarvis_rag/rag_pipeline.py,sha256=MSVfTVqDRK1_m0SMeOBcqirAyrd8GsVC27vanMbUCUY,10598
72
69
  jarvis/jarvis_rag/reranker.py,sha256=wYUDIMHQL8_tFcQ7GFn_zYHTE1AbKk4a9TRoN2lKtA8,1767
73
- jarvis/jarvis_rag/retriever.py,sha256=B6oq1SAh7QAE9G5o0sXyNtLjFodukd8p-Was2QJZXg0,7637
70
+ jarvis/jarvis_rag/retriever.py,sha256=j-Lyok7N5j1aD5s6X6sOwyBA1oXclzkJ5AnKOh9PKUs,7665
74
71
  jarvis/jarvis_smart_shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
- jarvis/jarvis_smart_shell/main.py,sha256=3oAl4LbpkiJWCpxqwXF6-vmydZr5HMFKCvkQR94dzLc,6946
72
+ jarvis/jarvis_smart_shell/main.py,sha256=MXUVaXvT9zOxykbQphCGEXUCRhdOhEthQxHba_D4oiE,6015
76
73
  jarvis/jarvis_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
74
  jarvis/jarvis_tools/ask_user.py,sha256=M6DdLNryCE8y1JcdZHEifUgZkPUEPNKc-zDW5p0Mb1k,2029
78
75
  jarvis/jarvis_tools/base.py,sha256=tFVmK6ppsImW2BzHZmrNmMRiOJdW-4aZP6Me3VxdYcA,1194
79
76
  jarvis/jarvis_tools/edit_file.py,sha256=hM345E9rxS-EkqCZpwwizL6fmPdTadtB798tEO5Ce3g,10417
80
77
  jarvis/jarvis_tools/execute_script.py,sha256=gMarE5yCCSPU6Dp6HlcL2KT-2xCzR-1p-oQNlYOJK58,6157
81
78
  jarvis/jarvis_tools/file_analyzer.py,sha256=aVe1jBSp0YmlypihxrGADJpYrU_7CxDETxGUNySuSlI,4044
82
- jarvis/jarvis_tools/generate_new_tool.py,sha256=ppMRuTYUZ0c02rHo7xi8DCGiDVPZTANVp9nS7bvkqqo,7819
79
+ jarvis/jarvis_tools/generate_new_tool.py,sha256=uaWKlDMGjetvvwKTj0_AVTdmd14IktRbU3cpzKCBiIQ,8728
83
80
  jarvis/jarvis_tools/methodology.py,sha256=_K4GIDUodGEma3SvNRo7Qs5rliijgNespVLyAPN35JU,5233
84
81
  jarvis/jarvis_tools/read_code.py,sha256=EnI-R-5HyIQYhMD391nZWXHIuHHBF-OJIRE0QpLcPX4,6417
85
82
  jarvis/jarvis_tools/read_webpage.py,sha256=NmDUboVZd4CGHBPRFK6dp3uqVhuGopW1bOi3TcaLDF4,2092
86
- jarvis/jarvis_tools/registry.py,sha256=FO72qNhDXeBRMnLc9IR87X0SNqAkGkzbHYtbw-7OMgI,28604
83
+ jarvis/jarvis_tools/registry.py,sha256=etJicnDvmfvu3MZwF4LiufKL63sV812FUZOpBBS28DU,28195
87
84
  jarvis/jarvis_tools/rewrite_file.py,sha256=eG_WKg6cVAXmuGwUqlWkcuyay5S8DOzEi8vZCmX3O8w,7255
88
- jarvis/jarvis_tools/search_web.py,sha256=DDAPjYWTFaF85zsnhJ6VNDSc1BcY8EHus5ymKP9nnPs,5703
85
+ jarvis/jarvis_tools/search_web.py,sha256=qh3MomJNDzpw5JTBbJWxzJmIdmuUt2SZNqJNc8LJrO4,5829
89
86
  jarvis/jarvis_tools/virtual_tty.py,sha256=KKr3jpvQWWMPr2o40hlmN6fuXJCN8H4_ma5QU40Citc,16089
90
87
  jarvis/jarvis_tools/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
- jarvis/jarvis_tools/cli/main.py,sha256=Mg6TQDxMdzB1Ua1UrZ2EE-uQWsbaeojWaEGHJp2HimA,6375
88
+ jarvis/jarvis_tools/cli/main.py,sha256=ZOvdC6wEOTdhTJy8ZDF_AKlH0jBmVcbOrU-8JPK2gWM,4703
92
89
  jarvis/jarvis_utils/__init__.py,sha256=67h0ldisGlh3oK4DAeNEL2Bl_VsI3tSmfclasyVlueM,850
93
90
  jarvis/jarvis_utils/builtin_replace_map.py,sha256=4BurljGuiG_I93EBs7mlFlPm9wYC_4CmdTG5tQWpF6g,1712
94
- jarvis/jarvis_utils/config.py,sha256=YcPGjCSJ2_2CKtlY8ecyqaovKVb65XcQ5WNizjwmdVs,10689
91
+ jarvis/jarvis_utils/config.py,sha256=rntrk6eN42-Cx2wc9lnxKFo8yPc1OtEWIR9dMuA05iA,12828
95
92
  jarvis/jarvis_utils/embedding.py,sha256=oEOEM2qf16DMYwPsQe6srET9BknyjOdY2ef0jsp3Or8,2714
96
93
  jarvis/jarvis_utils/file_processors.py,sha256=XiM248SHS7lLgQDCbORVFWqinbVDUawYxWDOsLXDxP8,3043
97
94
  jarvis/jarvis_utils/git_utils.py,sha256=_b4-5uWOTVFjAB48QbRJNBR7PTD_jzi7-5V5M_wjXFo,21740
98
- jarvis/jarvis_utils/globals.py,sha256=QKeiiWhUlu9HE7SzAn0lKaeaXQF1uhmLXPZTeLKyGPQ,4048
99
- jarvis/jarvis_utils/http.py,sha256=Uqt1kcz0HWnAfXHHi1fNGwLb2lcVUqpbrG2Uk_-kcIU,4882
100
- jarvis/jarvis_utils/input.py,sha256=V2w3xV0MO73c4Y4XY_yy9jVNg7MmN76FmAnpKRiJUog,9160
95
+ jarvis/jarvis_utils/globals.py,sha256=INBGXbDkXOQa0AE7L6JhR5gr-TAZMsE5y4yK1sbB98U,4643
96
+ jarvis/jarvis_utils/http.py,sha256=eRhV3-GYuWmQ0ogq9di9WMlQkFcVb1zGCrySnOgT1x0,4392
97
+ jarvis/jarvis_utils/input.py,sha256=g0Xa1TNZHxLaYduREV_Wc55iqHD6djN73YFJbR83gUg,9488
101
98
  jarvis/jarvis_utils/methodology.py,sha256=V2Y0mbamrWBhhCK-3foAM1hKewOEcIDcXO-Sv_AU-kQ,9106
102
- jarvis/jarvis_utils/output.py,sha256=2QMpzb8ZOysQ6HHsRjRzjgUnNXaFGkIiZ_qElPKLbsA,10858
99
+ jarvis/jarvis_utils/output.py,sha256=E_J_RYXtkOgRiDSHCRE9QPHY8WQmmhIotQtIQru8GZA,10888
103
100
  jarvis/jarvis_utils/tag.py,sha256=f211opbbbTcSyzCDwuIK_oCnKhXPNK-RknYyGzY1yD0,431
104
- jarvis/jarvis_utils/utils.py,sha256=G6UuiBrPlWLpau1LbSGStrlAHCHG8JufINLD_bwtjTE,20006
105
- jarvis_ai_assistant-0.2.1.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
106
- jarvis_ai_assistant-0.2.1.dist-info/METADATA,sha256=2CaCKJhb4POadlWKBvaXRe1Lf1YVPNI1jCGXbbkQuDo,26021
107
- jarvis_ai_assistant-0.2.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
108
- jarvis_ai_assistant-0.2.1.dist-info/entry_points.txt,sha256=JXK_n-d9HZ_RLz959CvpK5-UPOCwssn5oAH8dAHuebA,1277
109
- jarvis_ai_assistant-0.2.1.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
110
- jarvis_ai_assistant-0.2.1.dist-info/RECORD,,
101
+ jarvis/jarvis_utils/utils.py,sha256=c3F4vYbCtQ-afw1_ncBVhQCLzzmi8jTRlffq1I4UhZc,20108
102
+ jarvis_ai_assistant-0.2.3.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
103
+ jarvis_ai_assistant-0.2.3.dist-info/METADATA,sha256=HSS2dolspYchoJ4e9KXJ_MyxNyBybBSxnfDHXU672tA,14584
104
+ jarvis_ai_assistant-0.2.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
105
+ jarvis_ai_assistant-0.2.3.dist-info/entry_points.txt,sha256=nXgfarEvf9Zelwvl6yGa4Zmqpsa7dDTahlzHRHL8qvM,1178
106
+ jarvis_ai_assistant-0.2.3.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
107
+ jarvis_ai_assistant-0.2.3.dist-info/RECORD,,
@@ -5,7 +5,6 @@ jarvis-agent = jarvis.jarvis_agent.main:main
5
5
  jarvis-code-agent = jarvis.jarvis_code_agent.code_agent:main
6
6
  jarvis-code-review = jarvis.jarvis_code_analysis.code_review:main
7
7
  jarvis-git-commit = jarvis.jarvis_git_utils.git_commiter:main
8
- jarvis-git-details = jarvis.jarvis_git_details.main:main
9
8
  jarvis-git-squash = jarvis.jarvis_git_squash.main:main
10
9
  jarvis-methodology = jarvis.jarvis_methodology.main:main
11
10
  jarvis-multi-agent = jarvis.jarvis_multi_agent.main:main
@@ -16,7 +15,6 @@ jarvis-tool = jarvis.jarvis_tools.cli.main:main
16
15
  jca = jarvis.jarvis_code_agent.code_agent:main
17
16
  jcr = jarvis.jarvis_code_analysis.code_review:main
18
17
  jgc = jarvis.jarvis_git_utils.git_commiter:main
19
- jgd = jarvis.jarvis_git_details.main:main
20
18
  jgs = jarvis.jarvis_git_squash.main:main
21
19
  jm = jarvis.jarvis_methodology.main:main
22
20
  jma = jarvis.jarvis_multi_agent.main:main
File without changes
@@ -1,265 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- """Git Commit分析工具模块
3
-
4
- 该模块提供了一个GitCommitAnalyzer类,用于获取和分析指定Git commit的详细信息,
5
- 包括提交信息、修改内容以及详细的功能、原因和逻辑分析。
6
- """
7
-
8
- import os
9
- import re
10
- import subprocess
11
- from typing import Any, Dict
12
-
13
- from jarvis.jarvis_agent import Agent
14
- from jarvis.jarvis_platform.registry import PlatformRegistry
15
- from jarvis.jarvis_tools.registry import ToolRegistry
16
- from jarvis.jarvis_utils.output import OutputType, PrettyOutput
17
- from jarvis.jarvis_utils.tag import ct, ot
18
- from jarvis.jarvis_utils.utils import init_env
19
-
20
-
21
- class GitCommitAnalyzer:
22
- """Git Commit分析器
23
-
24
- 该类用于获取和分析指定Git commit的详细信息,包括:
25
- - 完整的提交信息
26
- - 修改的文件列表和状态
27
- - 修改的功能、原因和逻辑分析
28
- """
29
-
30
- def execute(self, args: Dict[str, Any]) -> Dict[str, Any]:
31
- """执行commit分析
32
-
33
- Args:
34
- args: 包含commit_sha/commit_range和root_dir的参数字典
35
- commit_sha: 单个commit的SHA
36
- commit_range: 两个commit的SHA范围,格式为"commit1..commit2"
37
- root_dir: 代码库根目录
38
-
39
- Returns:
40
- 包含分析结果的字典
41
- """
42
- try:
43
- commit_sha = args.get("commit_sha")
44
- commit_range = args.get("commit_range")
45
- root_dir = args.get("root_dir", ".")
46
-
47
- if commit_range:
48
- return self.analyze_commit_range(commit_range, root_dir)
49
- elif commit_sha:
50
- return self.analyze_single_commit(commit_sha, root_dir)
51
- else:
52
- raise ValueError("Either commit_sha or commit_range must be provided")
53
- except Exception as e:
54
- return {
55
- "success": False,
56
- "stdout": {},
57
- "stderr": f"Failed to analyze commit: {str(e)}",
58
- }
59
-
60
- def analyze_single_commit(self, commit_sha: str, root_dir: str) -> Dict[str, Any]:
61
- """分析单个commit
62
-
63
- Args:
64
- commit_sha: commit的SHA
65
- root_dir: 代码库根目录
66
-
67
- Returns:
68
- 包含分析结果的字典
69
- """
70
- original_dir = os.getcwd()
71
- try:
72
- os.chdir(root_dir)
73
-
74
- # 获取commit详细信息
75
- commit_info = subprocess.check_output(
76
- f"git show {commit_sha} --pretty=fuller", shell=True, text=True
77
- )
78
-
79
- # 获取commit修改内容
80
- diff_content = subprocess.check_output(
81
- f"git show {commit_sha} --patch", shell=True, text=True
82
- )
83
-
84
- # 分析commit的功能、原因和逻辑
85
- analysis_result = self._analyze_diff_content(diff_content)
86
-
87
- return {
88
- "success": True,
89
- "stdout": {
90
- "commit_info": commit_info,
91
- "diff_content": diff_content,
92
- "analysis_result": analysis_result,
93
- },
94
- "stderr": "",
95
- }
96
- except subprocess.CalledProcessError as error:
97
- return {
98
- "success": False,
99
- "stdout": {},
100
- "stderr": f"Failed to analyze commit: {str(error)}",
101
- }
102
- finally:
103
- os.chdir(original_dir)
104
-
105
- def analyze_commit_range(self, commit_range: str, root_dir: str) -> Dict[str, Any]:
106
- """分析两个commit之间的代码变更
107
-
108
- Args:
109
- commit_range: 两个commit的SHA范围,格式为"commit1..commit2"
110
- root_dir: 代码库根目录
111
-
112
- Returns:
113
- 包含分析结果的字典
114
- """
115
- original_dir = os.getcwd()
116
- try:
117
- os.chdir(root_dir)
118
-
119
- # 获取commit范围差异
120
- diff_content = subprocess.check_output(
121
- f"git diff {commit_range} --patch", shell=True, text=True
122
- )
123
-
124
- # 获取commit范围信息
125
- commit_info = subprocess.check_output(
126
- f"git log {commit_range} --pretty=fuller", shell=True, text=True
127
- )
128
-
129
- # 使用相同的分析方法处理差异内容
130
- analysis_result = self._analyze_diff_content(diff_content)
131
-
132
- return {
133
- "success": True,
134
- "stdout": {
135
- "commit_info": commit_info,
136
- "diff_content": diff_content,
137
- "analysis_result": analysis_result,
138
- },
139
- "stderr": "",
140
- }
141
- except subprocess.CalledProcessError as error:
142
- return {
143
- "success": False,
144
- "stdout": {},
145
- "stderr": f"Failed to analyze commit range: {str(error)}",
146
- }
147
- finally:
148
- os.chdir(original_dir)
149
-
150
- def _analyze_diff_content(self, diff_content: str) -> str:
151
- """分析diff内容并生成报告
152
-
153
- Args:
154
- diff_content: git diff或git show的输出内容
155
-
156
- Returns:
157
- 分析结果字符串
158
- """
159
- system_prompt = """你是一位资深代码分析专家,拥有多年代码审查和重构经验。你需要对Git commit进行深入分析,包括:
160
- 1. 修改的功能:明确说明本次commit实现或修改了哪些功能
161
- 2. 修改的原因:分析为什么要进行这些修改(如修复bug、优化性能、添加新功能等)
162
- 3. 修改的逻辑:详细说明代码修改的具体实现逻辑和思路
163
- 4. 影响范围:评估本次修改可能影响的其他模块或功能
164
- 5. 代码质量:分析代码风格、可读性和可维护性
165
- 6. 测试覆盖:评估是否需要添加或修改测试用例
166
- 7. 最佳实践:检查代码是否符合行业最佳实践和项目规范
167
-
168
- 请确保分析内容:
169
- - 准确反映commit的实际修改
170
- - 提供足够的技术细节
171
- - 保持结构清晰,便于理解
172
- - 重点关注关键修改和潜在风险"""
173
-
174
- tool_registry = ToolRegistry()
175
- agent = Agent(
176
- system_prompt=system_prompt,
177
- name="Commit Analysis Agent",
178
- summary_prompt=f"""请生成一份详细的commit分析报告,包含以下内容:
179
- {ot("REPORT")}
180
- # 功能分析
181
- [说明本次commit实现或修改了哪些功能]
182
-
183
- # 修改原因
184
- [分析进行这些修改的原因,如修复bug、优化性能、添加新功能等]
185
-
186
- # 实现逻辑
187
- [详细说明代码修改的具体实现逻辑和思路]
188
-
189
- # 影响范围
190
- [评估本次修改可能影响的其他模块或功能]
191
-
192
- # 代码质量
193
- [分析代码风格、可读性和可维护性]
194
-
195
- # 测试覆盖
196
- [评估是否需要添加或修改测试用例]
197
-
198
- # 最佳实践
199
- [检查代码是否符合行业最佳实践和项目规范]
200
- {ct("REPORT")}""",
201
- output_handler=[tool_registry],
202
- llm_type="normal",
203
- auto_complete=True,
204
- )
205
-
206
- return agent.run(diff_content)
207
-
208
-
209
- def extract_analysis_report(result: str) -> str:
210
- """从分析结果中提取报告内容
211
-
212
- Args:
213
- result: 包含REPORT标签的完整分析结果字符串
214
-
215
- Returns:
216
- 提取的报告内容,如果未找到REPORT标签则返回空字符串
217
- """
218
- search_match = re.search(
219
- ot("REPORT") + r"\n(.*?)\n" + ct("REPORT"), result, re.DOTALL
220
- )
221
- if search_match:
222
- return search_match.group(1)
223
- return result
224
-
225
-
226
- def main():
227
- """主函数,用于命令行接口"""
228
- import argparse
229
-
230
- init_env("欢迎使用 Jarvis-GitCommitAnalyzer,您的Git Commit分析助手已准备就绪!")
231
-
232
- parser = argparse.ArgumentParser(description="Git Commit Analyzer")
233
- group = parser.add_mutually_exclusive_group(required=True)
234
- group.add_argument("commit", nargs="?", help="Commit SHA to analyze")
235
- group.add_argument(
236
- "--range", type=str, help="Commit range to analyze (commit1..commit2)"
237
- )
238
- parser.add_argument(
239
- "--root-dir", type=str, help="Root directory of the codebase", default="."
240
- )
241
-
242
- args = parser.parse_args()
243
-
244
- analyzer = GitCommitAnalyzer()
245
- if args.range:
246
- result = analyzer.execute(
247
- {"commit_range": args.range, "root_dir": args.root_dir}
248
- )
249
- else:
250
- result = analyzer.execute(
251
- {"commit_sha": args.commit, "root_dir": args.root_dir}
252
- )
253
-
254
- if result["success"]:
255
- PrettyOutput.section("Commit Information:", OutputType.SUCCESS)
256
- PrettyOutput.print(result["stdout"]["commit_info"], OutputType.CODE)
257
- PrettyOutput.section("Analysis Report:", OutputType.SUCCESS)
258
- report = extract_analysis_report(result["stdout"]["analysis_result"])
259
- PrettyOutput.print(report, OutputType.SUCCESS, lang="markdown")
260
- else:
261
- PrettyOutput.print(result["stderr"], OutputType.WARNING)
262
-
263
-
264
- if __name__ == "__main__":
265
- main()