jarvis-ai-assistant 0.3.30__py3-none-any.whl → 0.7.6__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 (181) hide show
  1. jarvis/__init__.py +1 -1
  2. jarvis/jarvis_agent/__init__.py +458 -152
  3. jarvis/jarvis_agent/agent_manager.py +17 -13
  4. jarvis/jarvis_agent/builtin_input_handler.py +2 -6
  5. jarvis/jarvis_agent/config_editor.py +2 -7
  6. jarvis/jarvis_agent/event_bus.py +82 -12
  7. jarvis/jarvis_agent/file_context_handler.py +329 -0
  8. jarvis/jarvis_agent/file_methodology_manager.py +3 -4
  9. jarvis/jarvis_agent/jarvis.py +628 -55
  10. jarvis/jarvis_agent/language_extractors/__init__.py +57 -0
  11. jarvis/jarvis_agent/language_extractors/c_extractor.py +21 -0
  12. jarvis/jarvis_agent/language_extractors/cpp_extractor.py +21 -0
  13. jarvis/jarvis_agent/language_extractors/go_extractor.py +21 -0
  14. jarvis/jarvis_agent/language_extractors/java_extractor.py +84 -0
  15. jarvis/jarvis_agent/language_extractors/javascript_extractor.py +79 -0
  16. jarvis/jarvis_agent/language_extractors/python_extractor.py +21 -0
  17. jarvis/jarvis_agent/language_extractors/rust_extractor.py +21 -0
  18. jarvis/jarvis_agent/language_extractors/typescript_extractor.py +84 -0
  19. jarvis/jarvis_agent/language_support_info.py +486 -0
  20. jarvis/jarvis_agent/main.py +34 -10
  21. jarvis/jarvis_agent/memory_manager.py +7 -16
  22. jarvis/jarvis_agent/methodology_share_manager.py +10 -16
  23. jarvis/jarvis_agent/prompt_manager.py +1 -1
  24. jarvis/jarvis_agent/prompts.py +193 -171
  25. jarvis/jarvis_agent/protocols.py +8 -12
  26. jarvis/jarvis_agent/run_loop.py +105 -9
  27. jarvis/jarvis_agent/session_manager.py +2 -3
  28. jarvis/jarvis_agent/share_manager.py +20 -22
  29. jarvis/jarvis_agent/shell_input_handler.py +1 -2
  30. jarvis/jarvis_agent/stdio_redirect.py +295 -0
  31. jarvis/jarvis_agent/task_analyzer.py +31 -6
  32. jarvis/jarvis_agent/task_manager.py +11 -27
  33. jarvis/jarvis_agent/tool_executor.py +2 -3
  34. jarvis/jarvis_agent/tool_share_manager.py +12 -24
  35. jarvis/jarvis_agent/utils.py +5 -1
  36. jarvis/jarvis_agent/web_bridge.py +189 -0
  37. jarvis/jarvis_agent/web_output_sink.py +53 -0
  38. jarvis/jarvis_agent/web_server.py +786 -0
  39. jarvis/jarvis_c2rust/__init__.py +26 -0
  40. jarvis/jarvis_c2rust/cli.py +575 -0
  41. jarvis/jarvis_c2rust/collector.py +250 -0
  42. jarvis/jarvis_c2rust/constants.py +26 -0
  43. jarvis/jarvis_c2rust/library_replacer.py +1254 -0
  44. jarvis/jarvis_c2rust/llm_module_agent.py +1272 -0
  45. jarvis/jarvis_c2rust/loaders.py +207 -0
  46. jarvis/jarvis_c2rust/models.py +28 -0
  47. jarvis/jarvis_c2rust/optimizer.py +2157 -0
  48. jarvis/jarvis_c2rust/scanner.py +1681 -0
  49. jarvis/jarvis_c2rust/transpiler.py +2983 -0
  50. jarvis/jarvis_c2rust/utils.py +385 -0
  51. jarvis/jarvis_code_agent/build_validation_config.py +132 -0
  52. jarvis/jarvis_code_agent/code_agent.py +1371 -220
  53. jarvis/jarvis_code_agent/code_analyzer/__init__.py +65 -0
  54. jarvis/jarvis_code_agent/code_analyzer/base_language.py +74 -0
  55. jarvis/jarvis_code_agent/code_analyzer/build_validator/__init__.py +44 -0
  56. jarvis/jarvis_code_agent/code_analyzer/build_validator/base.py +106 -0
  57. jarvis/jarvis_code_agent/code_analyzer/build_validator/cmake.py +74 -0
  58. jarvis/jarvis_code_agent/code_analyzer/build_validator/detector.py +125 -0
  59. jarvis/jarvis_code_agent/code_analyzer/build_validator/fallback.py +72 -0
  60. jarvis/jarvis_code_agent/code_analyzer/build_validator/go.py +70 -0
  61. jarvis/jarvis_code_agent/code_analyzer/build_validator/java_gradle.py +53 -0
  62. jarvis/jarvis_code_agent/code_analyzer/build_validator/java_maven.py +47 -0
  63. jarvis/jarvis_code_agent/code_analyzer/build_validator/makefile.py +61 -0
  64. jarvis/jarvis_code_agent/code_analyzer/build_validator/nodejs.py +110 -0
  65. jarvis/jarvis_code_agent/code_analyzer/build_validator/python.py +154 -0
  66. jarvis/jarvis_code_agent/code_analyzer/build_validator/rust.py +110 -0
  67. jarvis/jarvis_code_agent/code_analyzer/build_validator/validator.py +153 -0
  68. jarvis/jarvis_code_agent/code_analyzer/build_validator.py +43 -0
  69. jarvis/jarvis_code_agent/code_analyzer/context_manager.py +648 -0
  70. jarvis/jarvis_code_agent/code_analyzer/context_recommender.py +18 -0
  71. jarvis/jarvis_code_agent/code_analyzer/dependency_analyzer.py +132 -0
  72. jarvis/jarvis_code_agent/code_analyzer/file_ignore.py +330 -0
  73. jarvis/jarvis_code_agent/code_analyzer/impact_analyzer.py +781 -0
  74. jarvis/jarvis_code_agent/code_analyzer/language_registry.py +185 -0
  75. jarvis/jarvis_code_agent/code_analyzer/language_support.py +110 -0
  76. jarvis/jarvis_code_agent/code_analyzer/languages/__init__.py +49 -0
  77. jarvis/jarvis_code_agent/code_analyzer/languages/c_cpp_language.py +299 -0
  78. jarvis/jarvis_code_agent/code_analyzer/languages/go_language.py +215 -0
  79. jarvis/jarvis_code_agent/code_analyzer/languages/java_language.py +212 -0
  80. jarvis/jarvis_code_agent/code_analyzer/languages/javascript_language.py +254 -0
  81. jarvis/jarvis_code_agent/code_analyzer/languages/python_language.py +269 -0
  82. jarvis/jarvis_code_agent/code_analyzer/languages/rust_language.py +281 -0
  83. jarvis/jarvis_code_agent/code_analyzer/languages/typescript_language.py +280 -0
  84. jarvis/jarvis_code_agent/code_analyzer/llm_context_recommender.py +605 -0
  85. jarvis/jarvis_code_agent/code_analyzer/structured_code.py +556 -0
  86. jarvis/jarvis_code_agent/code_analyzer/symbol_extractor.py +252 -0
  87. jarvis/jarvis_code_agent/code_analyzer/tree_sitter_extractor.py +58 -0
  88. jarvis/jarvis_code_agent/lint.py +501 -8
  89. jarvis/jarvis_code_agent/utils.py +141 -0
  90. jarvis/jarvis_code_analysis/code_review.py +493 -584
  91. jarvis/jarvis_data/config_schema.json +128 -12
  92. jarvis/jarvis_git_squash/main.py +4 -5
  93. jarvis/jarvis_git_utils/git_commiter.py +82 -75
  94. jarvis/jarvis_mcp/sse_mcp_client.py +22 -29
  95. jarvis/jarvis_mcp/stdio_mcp_client.py +12 -13
  96. jarvis/jarvis_mcp/streamable_mcp_client.py +15 -14
  97. jarvis/jarvis_memory_organizer/memory_organizer.py +55 -74
  98. jarvis/jarvis_methodology/main.py +32 -48
  99. jarvis/jarvis_multi_agent/__init__.py +287 -55
  100. jarvis/jarvis_multi_agent/main.py +36 -4
  101. jarvis/jarvis_platform/base.py +524 -202
  102. jarvis/jarvis_platform/human.py +7 -8
  103. jarvis/jarvis_platform/kimi.py +30 -36
  104. jarvis/jarvis_platform/openai.py +88 -25
  105. jarvis/jarvis_platform/registry.py +26 -10
  106. jarvis/jarvis_platform/tongyi.py +24 -25
  107. jarvis/jarvis_platform/yuanbao.py +32 -43
  108. jarvis/jarvis_platform_manager/main.py +66 -77
  109. jarvis/jarvis_platform_manager/service.py +8 -13
  110. jarvis/jarvis_rag/cli.py +53 -55
  111. jarvis/jarvis_rag/embedding_manager.py +13 -18
  112. jarvis/jarvis_rag/llm_interface.py +8 -9
  113. jarvis/jarvis_rag/query_rewriter.py +10 -21
  114. jarvis/jarvis_rag/rag_pipeline.py +24 -27
  115. jarvis/jarvis_rag/reranker.py +4 -5
  116. jarvis/jarvis_rag/retriever.py +28 -30
  117. jarvis/jarvis_sec/__init__.py +305 -0
  118. jarvis/jarvis_sec/agents.py +143 -0
  119. jarvis/jarvis_sec/analysis.py +276 -0
  120. jarvis/jarvis_sec/checkers/__init__.py +32 -0
  121. jarvis/jarvis_sec/checkers/c_checker.py +2680 -0
  122. jarvis/jarvis_sec/checkers/rust_checker.py +1108 -0
  123. jarvis/jarvis_sec/cli.py +139 -0
  124. jarvis/jarvis_sec/clustering.py +1439 -0
  125. jarvis/jarvis_sec/file_manager.py +427 -0
  126. jarvis/jarvis_sec/parsers.py +73 -0
  127. jarvis/jarvis_sec/prompts.py +268 -0
  128. jarvis/jarvis_sec/report.py +336 -0
  129. jarvis/jarvis_sec/review.py +453 -0
  130. jarvis/jarvis_sec/status.py +264 -0
  131. jarvis/jarvis_sec/types.py +20 -0
  132. jarvis/jarvis_sec/utils.py +499 -0
  133. jarvis/jarvis_sec/verification.py +848 -0
  134. jarvis/jarvis_sec/workflow.py +226 -0
  135. jarvis/jarvis_smart_shell/main.py +38 -87
  136. jarvis/jarvis_stats/cli.py +2 -2
  137. jarvis/jarvis_stats/stats.py +8 -8
  138. jarvis/jarvis_stats/storage.py +15 -21
  139. jarvis/jarvis_stats/visualizer.py +1 -1
  140. jarvis/jarvis_tools/clear_memory.py +3 -20
  141. jarvis/jarvis_tools/cli/main.py +21 -23
  142. jarvis/jarvis_tools/edit_file.py +1019 -132
  143. jarvis/jarvis_tools/execute_script.py +83 -25
  144. jarvis/jarvis_tools/file_analyzer.py +6 -9
  145. jarvis/jarvis_tools/generate_new_tool.py +14 -21
  146. jarvis/jarvis_tools/lsp_client.py +1552 -0
  147. jarvis/jarvis_tools/methodology.py +2 -3
  148. jarvis/jarvis_tools/read_code.py +1736 -35
  149. jarvis/jarvis_tools/read_symbols.py +140 -0
  150. jarvis/jarvis_tools/read_webpage.py +12 -13
  151. jarvis/jarvis_tools/registry.py +427 -200
  152. jarvis/jarvis_tools/retrieve_memory.py +20 -19
  153. jarvis/jarvis_tools/rewrite_file.py +72 -158
  154. jarvis/jarvis_tools/save_memory.py +3 -15
  155. jarvis/jarvis_tools/search_web.py +18 -18
  156. jarvis/jarvis_tools/sub_agent.py +36 -43
  157. jarvis/jarvis_tools/sub_code_agent.py +25 -26
  158. jarvis/jarvis_tools/virtual_tty.py +55 -33
  159. jarvis/jarvis_utils/clipboard.py +7 -10
  160. jarvis/jarvis_utils/config.py +232 -45
  161. jarvis/jarvis_utils/embedding.py +8 -5
  162. jarvis/jarvis_utils/fzf.py +8 -8
  163. jarvis/jarvis_utils/git_utils.py +225 -36
  164. jarvis/jarvis_utils/globals.py +3 -3
  165. jarvis/jarvis_utils/http.py +1 -1
  166. jarvis/jarvis_utils/input.py +99 -48
  167. jarvis/jarvis_utils/jsonnet_compat.py +465 -0
  168. jarvis/jarvis_utils/methodology.py +52 -48
  169. jarvis/jarvis_utils/utils.py +819 -491
  170. jarvis_ai_assistant-0.7.6.dist-info/METADATA +600 -0
  171. jarvis_ai_assistant-0.7.6.dist-info/RECORD +218 -0
  172. {jarvis_ai_assistant-0.3.30.dist-info → jarvis_ai_assistant-0.7.6.dist-info}/entry_points.txt +4 -0
  173. jarvis/jarvis_agent/config.py +0 -92
  174. jarvis/jarvis_agent/edit_file_handler.py +0 -296
  175. jarvis/jarvis_platform/ai8.py +0 -332
  176. jarvis/jarvis_tools/ask_user.py +0 -54
  177. jarvis_ai_assistant-0.3.30.dist-info/METADATA +0 -381
  178. jarvis_ai_assistant-0.3.30.dist-info/RECORD +0 -137
  179. {jarvis_ai_assistant-0.3.30.dist-info → jarvis_ai_assistant-0.7.6.dist-info}/WHEEL +0 -0
  180. {jarvis_ai_assistant-0.3.30.dist-info → jarvis_ai_assistant-0.7.6.dist-info}/licenses/LICENSE +0 -0
  181. {jarvis_ai_assistant-0.3.30.dist-info → jarvis_ai_assistant-0.7.6.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,218 @@
1
+ jarvis/__init__.py,sha256=S1NtBw43o-3g9_StQDCxJhjmd8tor4scNNAG0eUh2lo,73
2
+ jarvis/jarvis_agent/__init__.py,sha256=TjozGtQWYj-9SJlzIWz23hfxOLzOSo5lOWC_wF6YKDM,62110
3
+ jarvis/jarvis_agent/agent_manager.py,sha256=yCU0D_LWmjW1qaDAQRNElvbg69NKLh_SjuMIjS8f9jA,3473
4
+ jarvis/jarvis_agent/builtin_input_handler.py,sha256=0l7usDO-r1rdynpTH3l75ZtyhK1gi2Nz8IS1_CoTW8E,2699
5
+ jarvis/jarvis_agent/config_editor.py,sha256=C3lpjbDag8JUTmAZ-BEp40UPh4cyXp2Lsajvv02xLa0,1768
6
+ jarvis/jarvis_agent/event_bus.py,sha256=Yvn4HImfj-bDMBlZh0FIHiceSQ8RzNSkAGl0fLyQjhE,4507
7
+ jarvis/jarvis_agent/events.py,sha256=rmFQ37PasImCh7OCdCzNBvubk-kHwcUiYLgzmL0t0_4,3689
8
+ jarvis/jarvis_agent/file_context_handler.py,sha256=8YXgjXK5Tz4K_J5QSKigXBDEu07iTFHzsJ6J4wATZB0,11555
9
+ jarvis/jarvis_agent/file_methodology_manager.py,sha256=lPQKKRIgvzqmpeW07cTdGxsnzfJ09KqRr6OxCJkGR8Y,4286
10
+ jarvis/jarvis_agent/jarvis.py,sha256=oMVzxWJ78VQ0w6BqSIF84B6oy55hHoRcBVfXJWrGBUA,50713
11
+ jarvis/jarvis_agent/language_support_info.py,sha256=H8_40_razShe86kXN6VBKHza3nw5DeBIvPVRAkxcd3g,22138
12
+ jarvis/jarvis_agent/main.py,sha256=WoUoSP6lT_GQmPN3DW-Ow3ONDiDTkBVva-5rf38S3MQ,4285
13
+ jarvis/jarvis_agent/memory_manager.py,sha256=je-sx279LfYCIKGoyMTYnSo_i3B6eGPrAOHtRtTHdpo,7449
14
+ jarvis/jarvis_agent/methodology_share_manager.py,sha256=5bP8ibaV1yKNX_JXkea4iBksh9wL50ywOC9ouBbT0lE,6616
15
+ jarvis/jarvis_agent/output_handler.py,sha256=P7oWpXBGFfOsWq7cIhS_z9crkQ19ES7qU5pM92KKjAs,1172
16
+ jarvis/jarvis_agent/prompt_builder.py,sha256=PH1fPDVa8z_RXkoXHJFNDf8PQjUoLNLYwkh2lC__p40,1705
17
+ jarvis/jarvis_agent/prompt_manager.py,sha256=NlycrzV7umrwYK9295kN2T_N_drLgnddgGupQ0_5XpQ,2706
18
+ jarvis/jarvis_agent/prompts.py,sha256=ELIXlB1CqzAYNEBX4J1cnmuXGU0WUVOuHJpRyf4XvAg,12554
19
+ jarvis/jarvis_agent/protocols.py,sha256=X1GQggfVPkJKRUjE2lLV1xpCi4pi4oXNlByhxFoxpTw,799
20
+ jarvis/jarvis_agent/run_loop.py,sha256=Fsq__zu-gOQtzEvhqUYfy94DiBWa1ZOtFO3Ry19l6J0,10121
21
+ jarvis/jarvis_agent/session_manager.py,sha256=JFfQ0vRAi9EC3vn1wOefORM7pmGCrR8aqOiD6mHZlOA,2904
22
+ jarvis/jarvis_agent/share_manager.py,sha256=DUX1AinI3DCjYNyq2I2Ijedq63ddh5ufEHR5zrn5VDo,8683
23
+ jarvis/jarvis_agent/shell_input_handler.py,sha256=98PqY2FTvXDYdSRvHB3KUiZkLey0icZet-GSP6I58-8,1911
24
+ jarvis/jarvis_agent/stdio_redirect.py,sha256=cG3z54rShhE9ATFlcVFgKXNk8ShqwSVfDCtaIVilTes,9923
25
+ jarvis/jarvis_agent/task_analyzer.py,sha256=oLQPvTLXac1BbG4aJcOb77_YG_fv-mpHtgE0816fDFQ,8903
26
+ jarvis/jarvis_agent/task_manager.py,sha256=-UQq6gJON_yHQB4kAAFWVv5S4ceh3F-jbvP3h7hA5Ok,5924
27
+ jarvis/jarvis_agent/tool_executor.py,sha256=HZMEMXso_IIU30b6hDJn84GRhV_425mZapQ7jPTm32s,1784
28
+ jarvis/jarvis_agent/tool_share_manager.py,sha256=PMU2iyTKiYGrYeobCYYIhMKmz6zcVw3rXeZeev6d9Yc,4751
29
+ jarvis/jarvis_agent/user_interaction.py,sha256=tifFN49GkO_Q80sqOTVmhxwbNWTazF3K0cr8AnnvzdU,1453
30
+ jarvis/jarvis_agent/utils.py,sha256=WJmKys_ceDALL73GdMCOgmjGHBzeRSPj7rmc8Pkrvzc,1784
31
+ jarvis/jarvis_agent/web_bridge.py,sha256=h15PXuPWWfZynWt8bPW4BDeCpIVoIOlRXfO0je6HDx4,6673
32
+ jarvis/jarvis_agent/web_output_sink.py,sha256=sZ6WbLZnuCdT5dS9d8msHY_g-pnj-dvML-I6uJ7-sbc,1733
33
+ jarvis/jarvis_agent/web_server.py,sha256=t9Li9BGOb4W6RVA83U9-91kaA_ZhCwf6rwqLVHUkF2M,30222
34
+ jarvis/jarvis_agent/language_extractors/__init__.py,sha256=gpbDs_iZINRDn5Mgh_0yoqtHzkY-Q1WK3m3X0RRy-BA,1307
35
+ jarvis/jarvis_agent/language_extractors/c_extractor.py,sha256=6Fz1DyeAieyK1x-upKCmTbwKnvpeQLnkbBqJM21ptdU,647
36
+ jarvis/jarvis_agent/language_extractors/cpp_extractor.py,sha256=Jl3ymVaE4609jJXLmmmWNWtKD_e-qT5F788wqXjKeMc,708
37
+ jarvis/jarvis_agent/language_extractors/go_extractor.py,sha256=SNRWqEiz2lkk_fEx7WAKvtKgmD10lG0xb_7moQNDiYs,639
38
+ jarvis/jarvis_agent/language_extractors/java_extractor.py,sha256=7XxWIRuieFBcKjxmyWt7EfdhjRFe3DC8C0e4rBVTIbE,3536
39
+ jarvis/jarvis_agent/language_extractors/javascript_extractor.py,sha256=I9O-xBFOCiagAlFBlWpV7F2yUYcHuIaYOJbL2-WjjkI,3072
40
+ jarvis/jarvis_agent/language_extractors/python_extractor.py,sha256=BgAbbvOIEiD7y_-96c1iAhI05-ICrk19u3HGU6Ocj9M,672
41
+ jarvis/jarvis_agent/language_extractors/rust_extractor.py,sha256=3z_I4eIV04Vx47_C076Jm_MjCE0RitAJ-e7rr2g64-U,657
42
+ jarvis/jarvis_agent/language_extractors/typescript_extractor.py,sha256=mn79GGNw5r0hIK-hEf26pQMCpTc9QMCgA5wHYmeogP4,3319
43
+ jarvis/jarvis_c2rust/__init__.py,sha256=Y_cYTusArFRWaVV-oFuECbIsp4bA2I2amQGBDcrcOOU,1299
44
+ jarvis/jarvis_c2rust/cli.py,sha256=7KPusq7js4Vg5UWQxkayhuLJiIKyhnnbuzmTRb6SREs,26048
45
+ jarvis/jarvis_c2rust/collector.py,sha256=Ox2E3NO97pt9iX6w0dRsqFuoEFJuTvDeP7_W9NaJ0C4,8188
46
+ jarvis/jarvis_c2rust/constants.py,sha256=mQS5vNJkvfpQ0hQTAkXLqLmqQaD1V-SmqhqqDpk6bZE,1050
47
+ jarvis/jarvis_c2rust/library_replacer.py,sha256=4g62YeMTbAabwZuSxHKK6qSfdN1FTKta6MacZsxq0wI,53464
48
+ jarvis/jarvis_c2rust/llm_module_agent.py,sha256=SR3FJMn7LhOSQG08Y3ICh2u2QY02jdyhfIrRvxDEWns,57971
49
+ jarvis/jarvis_c2rust/loaders.py,sha256=fGDiB-bcZQM0b97sDEeRDg4898XKVaGBC0TZuuP5PKc,7808
50
+ jarvis/jarvis_c2rust/models.py,sha256=RkAe2vPxj06qz6441Mo2D48CRNkdWRRGCpm4_nhzCHY,671
51
+ jarvis/jarvis_c2rust/optimizer.py,sha256=ZVtc1dCm9TCtytCuqfSq5NA6e4G_LxQVyvtPM0dv_n0,114011
52
+ jarvis/jarvis_c2rust/scanner.py,sha256=4kuRCCZYZXH1WBhS30CzSojFaj5kzX7a1m_C5J05e5U,62871
53
+ jarvis/jarvis_c2rust/transpiler.py,sha256=1izSwPUHDgC_BB6v1VDXAnXYqg_qknD5MaIEcRtmqW0,182263
54
+ jarvis/jarvis_c2rust/utils.py,sha256=j0oIz3cAN2-Cz5NFbgW2n-z9Pne2i2qKI875znOVUqA,15665
55
+ jarvis/jarvis_code_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
+ jarvis/jarvis_code_agent/build_validation_config.py,sha256=bLDHrKXf2RAzK_qLCp2kH0mcg-3YOHhQROIRz4FjP3Y,4371
57
+ jarvis/jarvis_code_agent/code_agent.py,sha256=ctvYj49RM1rrecWzEPuEcRzNZDmM4zhK8KareWzzFXk,86578
58
+ jarvis/jarvis_code_agent/lint.py,sha256=TlkKDMxxZtUspSgQ3tPZpTi7nY7Cp_XuJO7Smu1vmFM,19482
59
+ jarvis/jarvis_code_agent/utils.py,sha256=omcNzidIUA6C0OQUyGdHk9MHd7DHiu2PDnj6Trz5hbA,4818
60
+ jarvis/jarvis_code_agent/code_analyzer/__init__.py,sha256=BbiJUBC5YkZ-8Ty6KDyXbP7A3ksedVWg066Xk0AWj38,1742
61
+ jarvis/jarvis_code_agent/code_analyzer/base_language.py,sha256=4TH9Mlgnj4X3n9uOJgJTTWHSMrJYHpojcLGzXlBen_E,2132
62
+ jarvis/jarvis_code_agent/code_analyzer/build_validator.py,sha256=XVBwHJgaBnwYaQ-bSXw3mts5aLW2SjgzsXu4s77GV4A,1032
63
+ jarvis/jarvis_code_agent/code_analyzer/context_manager.py,sha256=2EzEOO9PFlT5EB8KywwIblwHy3-u1PvQ75LJEaD1LRA,26943
64
+ jarvis/jarvis_code_agent/code_analyzer/context_recommender.py,sha256=xAYMHI2Gb7uSDaNdBuaJMLPGwwXeW34bByj_JT06wWM,433
65
+ jarvis/jarvis_code_agent/code_analyzer/dependency_analyzer.py,sha256=K_9-govIzeobGeoPvmgW-r4pTJAHxxnonklvl5rSpOg,5078
66
+ jarvis/jarvis_code_agent/code_analyzer/file_ignore.py,sha256=HU5769KTNv-gYoIi2drrMgzn6l8kfgzvs3RwEFHDOp8,9818
67
+ jarvis/jarvis_code_agent/code_analyzer/impact_analyzer.py,sha256=JqfneA1Z0ermmlZfYDQmTfxCbqibWbnMpwHBlHzpLTQ,29643
68
+ jarvis/jarvis_code_agent/code_analyzer/language_registry.py,sha256=k6Tg7l3UMEUIoUONyGQ-vMm62EBl4o200_clsXl6NEA,5597
69
+ jarvis/jarvis_code_agent/code_analyzer/language_support.py,sha256=4n7za48QoD_uyPHanvEI9qBmvhiKI0KIbXCwxe1x2To,3380
70
+ jarvis/jarvis_code_agent/code_analyzer/llm_context_recommender.py,sha256=5Ps_Is2zEf89JDWTaB5mzX26Tf-RY5vA3bFBA3BQ3C0,26182
71
+ jarvis/jarvis_code_agent/code_analyzer/structured_code.py,sha256=kIr7DPi_oI8tx1P9Wu8ZpWk87wvhODOvFst3AYnLBgM,23039
72
+ jarvis/jarvis_code_agent/code_analyzer/symbol_extractor.py,sha256=CA5ZUFOE3dVfV7YaZrkLZeTbhK4NhuDwO9TDZkDSry8,10358
73
+ jarvis/jarvis_code_agent/code_analyzer/tree_sitter_extractor.py,sha256=W6MQK6BlX7j9YDTyO70gtUZ3WCMml3_uED4j2-3tBig,2392
74
+ jarvis/jarvis_code_agent/code_analyzer/build_validator/__init__.py,sha256=FJda17qW9n4ICGmrhH_CAwN68iZ4kVdo0yF9dj5__oo,1202
75
+ jarvis/jarvis_code_agent/code_analyzer/build_validator/base.py,sha256=4RnS1e1KaRkw9FK1Ln23my-fFnxQM49Xg1ox0mqJ-Os,2981
76
+ jarvis/jarvis_code_agent/code_analyzer/build_validator/cmake.py,sha256=uYR38UJad9uhEfDbDPKNHQDpYftaxxQne1Itah8mgEw,2671
77
+ jarvis/jarvis_code_agent/code_analyzer/build_validator/detector.py,sha256=rLFWUhieg9-RbKTTrlnA-N2Nr2xSOyHoO5yFa-QaJA4,4247
78
+ jarvis/jarvis_code_agent/code_analyzer/build_validator/fallback.py,sha256=uU0QhZIsp8vL4YQy2oyvSvv9tBEncPibC1w3dSzd5Zw,2665
79
+ jarvis/jarvis_code_agent/code_analyzer/build_validator/go.py,sha256=Jp2WBwKeOmd9mwzLr48TOCho0OjOTD53XdldinvEhlI,2400
80
+ jarvis/jarvis_code_agent/code_analyzer/build_validator/java_gradle.py,sha256=Y7bPYoDy8HtEz9kDc6TfHq2Yo-stky-EwrXEHqfb2Hw,1617
81
+ jarvis/jarvis_code_agent/code_analyzer/build_validator/java_maven.py,sha256=GG9p5TEA7mfT-OOTzK5ej8_XUSI22HhwnFGKxymIy6k,1375
82
+ jarvis/jarvis_code_agent/code_analyzer/build_validator/makefile.py,sha256=nUV3X524VtpoOCvMbHdBYUFMPRJcFBLjRwSadX0Tm7g,1989
83
+ jarvis/jarvis_code_agent/code_analyzer/build_validator/nodejs.py,sha256=agAjoSyuwbqVS_8-osZyN0kIjjjkyfQq6Bhro6R-7vM,4653
84
+ jarvis/jarvis_code_agent/code_analyzer/build_validator/python.py,sha256=MBWoOlYk4zpDva2rJfUbgZs6RngpyRcd6g7no9HTkSI,6574
85
+ jarvis/jarvis_code_agent/code_analyzer/build_validator/rust.py,sha256=EH2TQykwGUXRSlrCLW0IQfpSvOgiV-jAKg-_neEe0cI,3898
86
+ jarvis/jarvis_code_agent/code_analyzer/build_validator/validator.py,sha256=KMt7i-SYzglpn3BIdwpZHaaD0OHin50gT1__FytR7qk,6537
87
+ jarvis/jarvis_code_agent/code_analyzer/languages/__init__.py,sha256=s3Gh0-pbCqFo119LVy1otZbZOv01P5GjvH2qm60jXVU,1361
88
+ jarvis/jarvis_code_agent/code_analyzer/languages/c_cpp_language.py,sha256=a9vBNu5Iqy4tVlj8msP6ogcR6_LwizxFkuNUo4LkKl0,9507
89
+ jarvis/jarvis_code_agent/code_analyzer/languages/go_language.py,sha256=X8nUrcVfhhgCMVeCFkz2puONH3fUmxKdIcBYrrzqTz4,7289
90
+ jarvis/jarvis_code_agent/code_analyzer/languages/java_language.py,sha256=TGhPFlQGoMiDvBZLA_MoNOWsRt6Ahod4bNHHbHglntM,7568
91
+ jarvis/jarvis_code_agent/code_analyzer/languages/javascript_language.py,sha256=u8uxLP8gY-zaqCLHIIx_HZHQXTRfnFltZjjYPIbNLZs,9362
92
+ jarvis/jarvis_code_agent/code_analyzer/languages/python_language.py,sha256=RGFtWfsNWlikLFG2-CIzXXQNR3oGcN6v_PQyPWQtAGA,11175
93
+ jarvis/jarvis_code_agent/code_analyzer/languages/rust_language.py,sha256=lZLwoNprQpjTo6mZ4JOsM2uWsQtjZcHpvHXeFd5qgLE,9759
94
+ jarvis/jarvis_code_agent/code_analyzer/languages/typescript_language.py,sha256=70jDzOWfd4l7CJuU9morv_TgQ5Gup3qxfmoKDxVbhlA,10278
95
+ jarvis/jarvis_code_analysis/code_review.py,sha256=EsUdl5Uq2xuWaZP8cVNUbCHoEjilGTVDzbRJK_FFpW8,29634
96
+ jarvis/jarvis_code_analysis/checklists/__init__.py,sha256=LIXAYa1sW3l7foP6kohLWnE98I_EQ0T7z5bYKHq6rJA,78
97
+ jarvis/jarvis_code_analysis/checklists/c_cpp.py,sha256=9t62bMqs6qTkFSio4SKkj88qyb5ZubWrw3MxJBQ4X1A,1317
98
+ jarvis/jarvis_code_analysis/checklists/csharp.py,sha256=ShPXrl2_UPAnGaCHAG2wLl90COG3HK2XCSr1UK2dxN4,2420
99
+ jarvis/jarvis_code_analysis/checklists/data_format.py,sha256=urCb9qiJBDGev6C-PXv30NKFoQeGdbtlOl1VSPbjCSA,3005
100
+ jarvis/jarvis_code_analysis/checklists/devops.py,sha256=tlKD75mbFx6HHk8H8eHL_I_WTusHvWA8Zfb5P6c_1w4,3542
101
+ jarvis/jarvis_code_analysis/checklists/docs.py,sha256=gxhxuw-w0puen2Hgwe9MsgO_kijtCJC6THXSoz3YgiA,3341
102
+ jarvis/jarvis_code_analysis/checklists/go.py,sha256=NDBFA0qPrjr1HOZYy5DYU0iIcKWCaevJRLw4fbHZwwQ,1388
103
+ jarvis/jarvis_code_analysis/checklists/infrastructure.py,sha256=7z5MZnOUT3FpMrTQw2QcxkkTHKdMblc_Rf2NjxSI39A,3765
104
+ jarvis/jarvis_code_analysis/checklists/java.py,sha256=gWRVhXfsNhRFdthjIiQTkviqLwisuKCrr6gjxP0S9Z4,2085
105
+ jarvis/jarvis_code_analysis/checklists/javascript.py,sha256=SQkw2I09DaaLxD_WTZjuHn4leUKil68IEPB03BoSYuo,2340
106
+ jarvis/jarvis_code_analysis/checklists/kotlin.py,sha256=dNSHM1u3R7lxe8BU8ADtDyKJxmj3NUh9ZQuC7HHWHGY,4436
107
+ jarvis/jarvis_code_analysis/checklists/loader.py,sha256=bjE4On6WMLt41bfkCZsHnBpfXF61VPthFPsgNcbH90c,1903
108
+ jarvis/jarvis_code_analysis/checklists/php.py,sha256=qW34sF9AqLuSVuOVP5yJUHnB9V3-YRQjNPuB3lFI5UY,2481
109
+ jarvis/jarvis_code_analysis/checklists/python.py,sha256=gjyJ0QPY1CAwqhbDnIyLYruvFduZU5hiKyehAXMHu-I,1452
110
+ jarvis/jarvis_code_analysis/checklists/ruby.py,sha256=kzwd7Wl6gKrkAANq7_MvA5X5du5r1MeE-EY2Xb43n7U,4274
111
+ jarvis/jarvis_code_analysis/checklists/rust.py,sha256=kzt6ARBzUaC2UCviIt5ybfhJjyCkK_V9Kd4e97Dbtd4,1646
112
+ jarvis/jarvis_code_analysis/checklists/shell.py,sha256=aRFYhQQvTgbYd-uY5pc8UHIUAHPtZeciTg4aDcwvRZE,2619
113
+ jarvis/jarvis_code_analysis/checklists/sql.py,sha256=vR0T6qC7b4dURjJVAd7kSVxyvZEQXPG1Jqc2sNTGp5c,2355
114
+ jarvis/jarvis_code_analysis/checklists/swift.py,sha256=TPx4I6Gupvs6tSerRKmTSKEPQpOLEbH2Y7LXg1uBgxc,2566
115
+ jarvis/jarvis_code_analysis/checklists/web.py,sha256=25gGD7pDadZQybNFvALYxWvK0VRjGQb1NVJQElwjyk0,3943
116
+ jarvis/jarvis_data/config_schema.json,sha256=JTdlxgS3ZOCHHiZ2jDqC_SuFtxDPCMjlINyM2WZMgUs,17800
117
+ jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4,sha256=Ijkht27pm96ZW3_3OFE-7xAPtR0YyTWXoRO8_-hlsqc,1681126
118
+ jarvis/jarvis_git_squash/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
119
+ jarvis/jarvis_git_squash/main.py,sha256=C6qszc494HrMz1Cgn473Yq59PTYp6V7LUhbEnsDT6_s,2259
120
+ jarvis/jarvis_git_utils/git_commiter.py,sha256=iX4bPM3gkPgH7CLDtTCmVP2sfZdVNp4yrnUfQAuVejI,17064
121
+ jarvis/jarvis_mcp/__init__.py,sha256=OPMtjD-uq9xAaKCRIDyKIosaFfBe1GBPu1az-mQ0rVM,2048
122
+ jarvis/jarvis_mcp/sse_mcp_client.py,sha256=Gj6NgWnjqEUHhfEcH_2YQc6FUlm-R7Upgr6XZGBLBLQ,22161
123
+ jarvis/jarvis_mcp/stdio_mcp_client.py,sha256=FghUfjZo3z3HcA6up8gs1SC4oBXNNV5blX0OMsV59YM,10946
124
+ jarvis/jarvis_mcp/streamable_mcp_client.py,sha256=BUTQGuc2W72YxftisBOeJHJOhTDIwc7Far14jNU7y-0,15239
125
+ jarvis/jarvis_memory_organizer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
+ jarvis/jarvis_memory_organizer/memory_organizer.py,sha256=drwsCF1iOhTKDaDG3RJEovA5vafaSnfNIysLmjeHUqM,25450
127
+ jarvis/jarvis_methodology/main.py,sha256=xGtV28yMquglAKKWC2d3s3AQOTeY1prhKsfuGGsmYZA,10350
128
+ jarvis/jarvis_multi_agent/__init__.py,sha256=-TKg9_XiLKU6CChsMThb5ox2BidP1K1K8iWkcUI4cZ0,17358
129
+ jarvis/jarvis_multi_agent/main.py,sha256=lKV7lcmPUISXY8gPDIqyOoZSxpkyhyUK2USb8h9PICg,3121
130
+ jarvis/jarvis_platform/__init__.py,sha256=WLQHSiE87PPket2M50_hHzjdMIgPIBx2VF8JfB_NNRk,105
131
+ jarvis/jarvis_platform/base.py,sha256=0vPqVxrrhamgthFCFe1PFEQVTYbEUadXD1_c18pHS_E,25633
132
+ jarvis/jarvis_platform/human.py,sha256=vhYarENpQUetqzqNCdi_cw26F0m9uAaJXRM1HHB0y5w,4652
133
+ jarvis/jarvis_platform/kimi.py,sha256=oFuyOCLglBu9pmvITh1UisJLc7N01JOHFpZPuuAmecY,15096
134
+ jarvis/jarvis_platform/openai.py,sha256=eW51SxjpsJhyvQ1m88u0_ggU-pnkj4lImFtvME0pEqQ,11373
135
+ jarvis/jarvis_platform/registry.py,sha256=KbQhQL1mUfar_F_f_42x2U8OWTW97i0Ob4OjqMART58,8674
136
+ jarvis/jarvis_platform/tongyi.py,sha256=5vzggKHN9EjgcnSXCNH7roQ_nswAupBztBKZoMmz75E,23180
137
+ jarvis/jarvis_platform/yuanbao.py,sha256=EIl5iubv5AWPI_V4La_WpCdTX0aposmNC0WUYPxnMqg,23054
138
+ jarvis/jarvis_platform_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
139
+ jarvis/jarvis_platform_manager/main.py,sha256=9841kIeA0q0Ns5Ya2t7X3DqnPoMHe4ehfggPEvhbrio,18677
140
+ jarvis/jarvis_platform_manager/service.py,sha256=3fm_rHhhGvkc4LWI9IB7W7B19fLKIjr3jFTiHIuzvmk,14623
141
+ jarvis/jarvis_rag/__init__.py,sha256=HRTXgnQxDuaE9x-e3r6SYqhJ5d4DSI_rrIxy2IGY6qk,320
142
+ jarvis/jarvis_rag/cache.py,sha256=Tqx_Oe-AhuWlMXHGHUaIuG6OEHoHBVZq7mL3kldtFFU,2723
143
+ jarvis/jarvis_rag/cli.py,sha256=K5NBPaR0mDSx1UMl1RDTHRTKjFbrt1wTr8SGRPKDUOw,16754
144
+ jarvis/jarvis_rag/embedding_manager.py,sha256=rJml-7oINFKaF5rv5nJjQbdi-4I08MDUZwKHzmipuqQ,10035
145
+ jarvis/jarvis_rag/llm_interface.py,sha256=Q8pXnHyoynL2J_zGGZ3HC6wy45GWcncpIQZu0u0lbRk,4417
146
+ jarvis/jarvis_rag/query_rewriter.py,sha256=gdYqqoYltKCpLLeSXauWLlfUdmAVMal4GRvKip0O5v8,3564
147
+ jarvis/jarvis_rag/rag_pipeline.py,sha256=JLuYlw6Ck_jsRFjIJ2PRUPWysSIqZf3WQb4dgGPQymE,13509
148
+ jarvis/jarvis_rag/reranker.py,sha256=MWUHPklYp_jOK_EiAPhZ0jUQGf82IToUWdrunRhjsRk,2498
149
+ jarvis/jarvis_rag/retriever.py,sha256=pvzI-sE9TV3zUwc6L8q3ycZSjc2d-RoXT7BLsbuOvEk,17924
150
+ jarvis/jarvis_sec/__init__.py,sha256=htTaCsAHAAjbyp5NGZKViurzcvNbh9oxvOJ7RglN_L8,12683
151
+ jarvis/jarvis_sec/agents.py,sha256=Bpn-hXMWYQFeGbeJmzfB0sZyZuRT2GpTLBrWmhQErlI,6916
152
+ jarvis/jarvis_sec/analysis.py,sha256=SvDAFzMbIg88FGK9-heYFnkp4lQotxQBC7q43NwzBJM,11761
153
+ jarvis/jarvis_sec/cli.py,sha256=M2wXAGZ_OJJBV0DfWQRnvSQazO7DIltlY1SXA7eoiJA,5109
154
+ jarvis/jarvis_sec/clustering.py,sha256=fk0l-0_OVyYYm1zqFfzCOCanMptYRR7xXzUDL5qTI7Q,58742
155
+ jarvis/jarvis_sec/file_manager.py,sha256=6-plNlAdu0Mo1wtS63XLXBB1GlFpFkW7h8F8GqXwUzE,15682
156
+ jarvis/jarvis_sec/parsers.py,sha256=5OCbArzPa6f_gJcATQL7wP-CMh-m73yc2pyBrkAnW6I,3069
157
+ jarvis/jarvis_sec/prompts.py,sha256=PgnGIU7DMSLNWUExSBAzT84dVCzBMfjcExfOKs3h71Y,16992
158
+ jarvis/jarvis_sec/report.py,sha256=pd0D2BiXKiMZCZbhI-TuZfAgL3OfcMiobdxzgLyMbn8,10569
159
+ jarvis/jarvis_sec/review.py,sha256=mc4hYWtwEKygX3-O_5lVTnMMYFibW_STwyzOOwZ4rZc,19029
160
+ jarvis/jarvis_sec/status.py,sha256=BtshMe7fkLMjyMmrG7Saezfd_xX1nmt0AL0axrmW1-k,8534
161
+ jarvis/jarvis_sec/types.py,sha256=_C3IHwnni3kApryP3c_UTYdvFdmlJSVXQLLefX94zl0,365
162
+ jarvis/jarvis_sec/utils.py,sha256=xwUFgJLDzD_U7rqUbND01pMOroHZokpwwxUyIcVk9Bg,19641
163
+ jarvis/jarvis_sec/verification.py,sha256=TA5T-q27FEoC66BQ0dNRg7Kr_7svmLTgvpFOF90lKLw,40586
164
+ jarvis/jarvis_sec/workflow.py,sha256=V9ubXFnmDOQjoQEOiRmB4cdOTkSOz4sJ4wemzUCI5c8,9971
165
+ jarvis/jarvis_sec/checkers/__init__.py,sha256=bkyIFSImBNFsH7RvwXwN6nETefRjtbS62gZRpQFH01I,706
166
+ jarvis/jarvis_sec/checkers/c_checker.py,sha256=-w_ij6BNGl6520mVL6nk9LtsLDQzwXSrskyc-CU_K9c,115465
167
+ jarvis/jarvis_sec/checkers/rust_checker.py,sha256=12sqoI5Phh_KpSjW-OwzRVfPx4MofTGUrmgPkpBdwes,40479
168
+ jarvis/jarvis_smart_shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
169
+ jarvis/jarvis_smart_shell/main.py,sha256=UFXQdMS3D-iM5yBhXNyZcFzm7y12hiDQnPR5qj2iARk,13064
170
+ jarvis/jarvis_stats/__init__.py,sha256=jJzgP43nxzLbNGs8Do4Jfta1PNCJMf1Oq9YTPd6EnFM,342
171
+ jarvis/jarvis_stats/cli.py,sha256=zSDuCIabe78mDA3NLQDILbjLaju4m-0oNYSPE15ikPU,11409
172
+ jarvis/jarvis_stats/stats.py,sha256=HTjlYgyQUT5S0OrJ1ofnZj8vh4Ws9bTzvQ33wJhXxg8,25371
173
+ jarvis/jarvis_stats/storage.py,sha256=9gZC5Kpst34F0kWzmjmn_74fbZG2Fj9OPNFQ4M7FSL8,21890
174
+ jarvis/jarvis_stats/visualizer.py,sha256=0Gc1O1cANq73GKrVVXr0rgP4tUBLQ9ZT2Q6oiLUJwS0,8539
175
+ jarvis/jarvis_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
176
+ jarvis/jarvis_tools/base.py,sha256=tFZkRlbV_a-pbjM-ci9AYmXVJm__FXuzVWKbQEyz4Ao,1639
177
+ jarvis/jarvis_tools/clear_memory.py,sha256=NbtcBuJYUzYDqHNv3i7G24oJNmLt-Z7VqTzIHKUF7CI,7794
178
+ jarvis/jarvis_tools/edit_file.py,sha256=IvYGrzgSKgfGoQrewIdr7ffwGYWPghB1qjNDR6r98eo,45849
179
+ jarvis/jarvis_tools/execute_script.py,sha256=UDsmEhg9r5AYm9bACcljLTORLExlaFm7Rdx9C_QLgWg,8867
180
+ jarvis/jarvis_tools/file_analyzer.py,sha256=a8izTqGLwW43dIOICyLbGzzedxecOfOScs1uHqb3seI,3999
181
+ jarvis/jarvis_tools/generate_new_tool.py,sha256=RfEwAQUICk31903m0fIr9bR9BLMm0Qmiic9SvGvNCzs,7987
182
+ jarvis/jarvis_tools/lsp_client.py,sha256=GbH2LWkCVaAHTaFg9O_JUodJ1SKUP26BataJ3nsDXTc,58782
183
+ jarvis/jarvis_tools/methodology.py,sha256=MehFkKzb0Ub3yE4jkV70R1gmhnMaeRqgApJLUBm7rBc,5119
184
+ jarvis/jarvis_tools/read_code.py,sha256=oi1_4AtnCA683DCOYVpRE6-rtzGAvIXKzClevB5mf58,77438
185
+ jarvis/jarvis_tools/read_symbols.py,sha256=7ERIICy2gQT-9Op5Q4J2EGLYlsJJE2Kyda8QyyVQ3dc,5538
186
+ jarvis/jarvis_tools/read_webpage.py,sha256=U2Yp71NyjSG9URO09lEzCB7swGumq4-ouqPy5QhavHI,5350
187
+ jarvis/jarvis_tools/registry.py,sha256=EXrdD7a07T1i-3sQkD5l1u_np5-gyiEp_I5_FTs9LiY,45349
188
+ jarvis/jarvis_tools/retrieve_memory.py,sha256=N5_yt6VhZ--gtGJpor3_B8RXdriLiN3n9DQ7uaTNOLQ,8751
189
+ jarvis/jarvis_tools/rewrite_file.py,sha256=zcNYPxlX6FzXIV6fl2NOXMX8JF_rzonOJQ-xEfX2jsg,3946
190
+ jarvis/jarvis_tools/save_memory.py,sha256=uhR9w_rC7G3i9_44HZ3dv2TfBQ_YRKZLd9TLMoXil_w,6488
191
+ jarvis/jarvis_tools/search_web.py,sha256=c-YWRSlDn7ObRSUlABs1Uacr81fBZfXn83m_CgVNxTA,6170
192
+ jarvis/jarvis_tools/sub_agent.py,sha256=ki8eeajWz7j7NAu0wlydLH3IuM5ZbdvJ0qjMwGhMTUg,8914
193
+ jarvis/jarvis_tools/sub_code_agent.py,sha256=Ib0nB-w8VE5MhTDysQ4loLCJkf962aQZkUeSnoFhyiE,9599
194
+ jarvis/jarvis_tools/virtual_tty.py,sha256=gNQuM6s0sjqNuYZubDixOG9tv5NXuKPEZroi4ywLG0A,26023
195
+ jarvis/jarvis_tools/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
196
+ jarvis/jarvis_tools/cli/main.py,sha256=IuMciri72nj7v_ghs8HVt60ncI4lxju2iKedERH5VQM,8784
197
+ jarvis/jarvis_utils/__init__.py,sha256=67h0ldisGlh3oK4DAeNEL2Bl_VsI3tSmfclasyVlueM,850
198
+ jarvis/jarvis_utils/builtin_replace_map.py,sha256=z8iAqsbZUiGFaozxG1xSu128op8udqHOeEw-GxNt4bU,1708
199
+ jarvis/jarvis_utils/clipboard.py,sha256=unlmtjPNVCAP9gjLQu6D1kTVRvLXNRP2_wp2a-AyLUU,2697
200
+ jarvis/jarvis_utils/config.py,sha256=QnEouV4VQ0uicO6Q-P6GVxhlKaRTAgx_QmYo9lEeGkk,26342
201
+ jarvis/jarvis_utils/embedding.py,sha256=n6MSA8IjaO2nSCznhxEWfdlvG8HTE5E6xMSJoDzHblA,2816
202
+ jarvis/jarvis_utils/file_processors.py,sha256=XiM248SHS7lLgQDCbORVFWqinbVDUawYxWDOsLXDxP8,3043
203
+ jarvis/jarvis_utils/fzf.py,sha256=Jxs8ebFf94EQtWfbKq9HliRZXo9Dq0F9dwUGN4XfMCs,1690
204
+ jarvis/jarvis_utils/git_utils.py,sha256=3xZF6hvPdOzETcmCW8SPXEdzooy0TIQPloOl4uzEhI8,30631
205
+ jarvis/jarvis_utils/globals.py,sha256=a7j4X1IBcJ8XJmxVhSOsOfXnniVf4p6JIRzRQvZ8fFk,8907
206
+ jarvis/jarvis_utils/http.py,sha256=KLTBqti8m9B2TPKOLAsNuxSd8mFPN0whQhuXYnRDNW0,4424
207
+ jarvis/jarvis_utils/input.py,sha256=0LrE0D66IlRNPdlz3OsXAqPjv6D91yj9AQ2odpv9erg,39244
208
+ jarvis/jarvis_utils/jsonnet_compat.py,sha256=qne1IFUyg9z6Rr_gUJsB6q6EHm4FRSHPVv5bGlrfBs0,19209
209
+ jarvis/jarvis_utils/methodology.py,sha256=YuCkYvriaVviT0YQ3uNyQ4gvpfGG3jldpJXcKw9YJr0,13034
210
+ jarvis/jarvis_utils/output.py,sha256=y2fVcao_2ZowFl0IxUrJZCi8T6ZM0z-iPzpk8T8eLxc,13623
211
+ jarvis/jarvis_utils/tag.py,sha256=f211opbbbTcSyzCDwuIK_oCnKhXPNK-RknYyGzY1yD0,431
212
+ jarvis/jarvis_utils/utils.py,sha256=Tkvg4z3pxwaWf6dCPQ1bzFE6EzDJ9BG4OBEFY0GT5B0,84131
213
+ jarvis_ai_assistant-0.7.6.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
214
+ jarvis_ai_assistant-0.7.6.dist-info/METADATA,sha256=v48HStGlNVXpwNYGrlClhIdHZMVXzrCz7A27RRANKok,26820
215
+ jarvis_ai_assistant-0.7.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
216
+ jarvis_ai_assistant-0.7.6.dist-info/entry_points.txt,sha256=Uxk2_VeucH_m7EwH2mw0SlEYHIUmbzXkjTb15z_lcko,1552
217
+ jarvis_ai_assistant-0.7.6.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
218
+ jarvis_ai_assistant-0.7.6.dist-info/RECORD,,
@@ -2,6 +2,7 @@
2
2
  ja = jarvis.jarvis_agent.main:main
3
3
  jarvis = jarvis.jarvis_agent.jarvis:main
4
4
  jarvis-agent = jarvis.jarvis_agent.main:main
5
+ jarvis-c2rust = jarvis.jarvis_c2rust.cli:main
5
6
  jarvis-code-agent = jarvis.jarvis_code_agent.code_agent:main
6
7
  jarvis-code-review = jarvis.jarvis_code_analysis.code_review:main
7
8
  jarvis-git-commit = jarvis.jarvis_git_utils.git_commiter:main
@@ -11,9 +12,11 @@ jarvis-methodology = jarvis.jarvis_methodology.main:main
11
12
  jarvis-multi-agent = jarvis.jarvis_multi_agent.main:main
12
13
  jarvis-platform-manager = jarvis.jarvis_platform_manager.main:main
13
14
  jarvis-rag = jarvis.jarvis_rag.cli:main
15
+ jarvis-sec = jarvis.jarvis_sec.cli:main
14
16
  jarvis-smart-shell = jarvis.jarvis_smart_shell.main:main
15
17
  jarvis-stats = jarvis.jarvis_stats.cli:main
16
18
  jarvis-tool = jarvis.jarvis_tools.cli.main:main
19
+ jc2r = jarvis.jarvis_c2rust.cli:main
17
20
  jca = jarvis.jarvis_code_agent.code_agent:main
18
21
  jcr = jarvis.jarvis_code_analysis.code_review:main
19
22
  jgc = jarvis.jarvis_git_utils.git_commiter:main
@@ -23,6 +26,7 @@ jma = jarvis.jarvis_multi_agent.main:main
23
26
  jmo = jarvis.jarvis_memory_organizer.memory_organizer:main
24
27
  jpm = jarvis.jarvis_platform_manager.main:main
25
28
  jrg = jarvis.jarvis_rag.cli:main
29
+ jsec = jarvis.jarvis_sec.cli:main
26
30
  jss = jarvis.jarvis_smart_shell.main:main
27
31
  jst = jarvis.jarvis_stats.cli:main
28
32
  jt = jarvis.jarvis_tools.cli.main:main
@@ -1,92 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- """
3
- AgentConfig: 聚合 Agent 的初始化配置并提供默认值解析。
4
-
5
- 目标(阶段一,最小变更):
6
- - 提供独立的配置承载类,封装 __init__ 中的配置项
7
- - 支持从全局配置与上下文推导默认值
8
- - 暂不强制替换 Agent 的现有参数与流程,后续逐步接入
9
- """
10
- from dataclasses import dataclass, field
11
- from typing import List, Optional
12
-
13
- from jarvis.jarvis_agent.prompts import DEFAULT_SUMMARY_PROMPT
14
- from jarvis.jarvis_utils.config import (
15
- get_max_token_count,
16
- is_execute_tool_confirm,
17
- is_force_save_memory,
18
- is_use_analysis,
19
- is_use_methodology,
20
- )
21
-
22
-
23
- @dataclass
24
- class AgentConfig:
25
- # 核心身份与系统参数
26
- system_prompt: str
27
- name: str = "Jarvis"
28
- description: str = ""
29
- model_group: Optional[str] = None
30
-
31
- # 运行行为
32
- auto_complete: bool = False
33
- need_summary: bool = True
34
-
35
- # 可选配置(None 表示使用默认策略解析)
36
- summary_prompt: Optional[str] = None
37
- execute_tool_confirm: Optional[bool] = None
38
- use_methodology: Optional[bool] = None
39
- use_analysis: Optional[bool] = None
40
- force_save_memory: Optional[bool] = None
41
- files: Optional[List[str]] = field(default_factory=list)
42
- max_token_count: Optional[int] = None
43
-
44
- def resolve_defaults(self) -> "AgentConfig":
45
- """
46
- 解析并填充默认值,返回新的 AgentConfig 实例,不修改原对象。
47
- 策略与 Agent._init_config 中的逻辑保持一致,确保兼容。
48
- """
49
- # 复制当前实例的浅拷贝数据
50
- cfg = AgentConfig(
51
- system_prompt=self.system_prompt,
52
- name=self.name,
53
- description=self.description,
54
- model_group=self.model_group,
55
- auto_complete=self.auto_complete,
56
- need_summary=self.need_summary,
57
- summary_prompt=self.summary_prompt,
58
- execute_tool_confirm=self.execute_tool_confirm,
59
- use_methodology=self.use_methodology,
60
- use_analysis=self.use_analysis,
61
- force_save_memory=self.force_save_memory,
62
- files=list(self.files or []),
63
- max_token_count=self.max_token_count,
64
- )
65
-
66
- # use_methodology: 若存在上传文件则禁用;否则按照外部传入或全局默认
67
- if cfg.files:
68
- cfg.use_methodology = False
69
- elif cfg.use_methodology is None:
70
- cfg.use_methodology = is_use_methodology()
71
-
72
- # use_analysis
73
- if cfg.use_analysis is None:
74
- cfg.use_analysis = is_use_analysis()
75
-
76
- # execute_tool_confirm
77
- if cfg.execute_tool_confirm is None:
78
- cfg.execute_tool_confirm = is_execute_tool_confirm()
79
-
80
- # summary_prompt
81
- if cfg.summary_prompt is None:
82
- cfg.summary_prompt = DEFAULT_SUMMARY_PROMPT
83
-
84
- # max_token_count
85
- if cfg.max_token_count is None:
86
- cfg.max_token_count = get_max_token_count(cfg.model_group)
87
-
88
- # force_save_memory
89
- if cfg.force_save_memory is None:
90
- cfg.force_save_memory = is_force_save_memory()
91
-
92
- return cfg
@@ -1,296 +0,0 @@
1
- import os
2
- import re
3
- from typing import Any, Dict, List, Tuple
4
-
5
- from jarvis.jarvis_agent.output_handler import OutputHandler
6
- from jarvis.jarvis_utils.output import OutputType, PrettyOutput
7
- from jarvis.jarvis_utils.tag import ct, ot
8
-
9
-
10
- class EditFileHandler(OutputHandler):
11
- def __init__(self):
12
- self.patch_pattern = re.compile(
13
- ot("PATCH file=(?:'([^']+)'|\"([^\"]+)\"|([^>]+))") + r"\s*"
14
- r"(?:"
15
- + ot("DIFF")
16
- + r"\s*"
17
- + ot("SEARCH")
18
- + r"(.*?)"
19
- + ct("SEARCH")
20
- + r"\s*"
21
- + ot("REPLACE")
22
- + r"(.*?)"
23
- + ct("REPLACE")
24
- + r"\s*"
25
- + ct("DIFF")
26
- + r"\s*)+"
27
- + ct("PATCH"),
28
- re.DOTALL,
29
- )
30
- self.diff_pattern = re.compile(
31
- ot("DIFF")
32
- + r"\s*"
33
- + ot("SEARCH")
34
- + r"(.*?)"
35
- + ct("SEARCH")
36
- + r"\s*"
37
- + ot("REPLACE")
38
- + r"(.*?)"
39
- + ct("REPLACE")
40
- + r"\s*"
41
- + ct("DIFF"),
42
- re.DOTALL,
43
- )
44
-
45
- def handle(self, response: str, agent: Any) -> Tuple[bool, str]:
46
- """处理文件编辑响应
47
-
48
- Args:
49
- response: 包含文件编辑指令的响应字符串
50
- agent: 执行处理的agent实例
51
-
52
- Returns:
53
- Tuple[bool, str]: 返回处理结果元组,第一个元素表示是否处理成功,第二个元素为处理结果汇总字符串
54
- """
55
- patches = self._parse_patches(response)
56
- if not patches:
57
- return False, "未找到有效的文件编辑指令"
58
-
59
- # 记录 edit_file 工具调用统计
60
- from jarvis.jarvis_stats.stats import StatsManager
61
-
62
- StatsManager.increment("edit_file", group="tool")
63
-
64
- results = []
65
-
66
- for file_path, diffs in patches.items():
67
- file_path = os.path.abspath(file_path)
68
- file_patches = [
69
- {"SEARCH": diff["SEARCH"], "REPLACE": diff["REPLACE"]} for diff in diffs
70
- ]
71
-
72
- success, result = self._fast_edit(file_path, file_patches)
73
-
74
- if success:
75
- results.append(f"✅ 文件 {file_path} 修改成功")
76
- else:
77
- results.append(f"❌ 文件 {file_path} 修改失败: {result}")
78
-
79
- summary = "\n".join(results)
80
- return False, summary
81
-
82
- def can_handle(self, response: str) -> bool:
83
- """判断是否能处理给定的响应
84
-
85
- Args:
86
- response: 需要判断的响应字符串
87
-
88
- Returns:
89
- bool: 返回是否能处理该响应
90
- """
91
- return bool(self.patch_pattern.search(response))
92
-
93
- def prompt(self) -> str:
94
- """获取处理器的提示信息
95
-
96
- Returns:
97
- str: 返回处理器的提示字符串
98
- """
99
- return f"""文件编辑指令格式:
100
- {ot("PATCH file=文件路径")}
101
- {ot("DIFF")}
102
- {ot("SEARCH")}原始代码{ct("SEARCH")}
103
- {ot("REPLACE")}新代码{ct("REPLACE")}
104
- {ct("DIFF")}
105
- {ct("PATCH")}
106
-
107
- 可以返回多个PATCH块用于同时修改多个文件
108
- 每个PATCH块可以包含多个DIFF块,每个DIFF块包含一组搜索和替换内容。
109
- 搜索文本必须能在文件中唯一匹配,否则编辑将失败。"""
110
-
111
- def name(self) -> str:
112
- """获取处理器的名称
113
-
114
- Returns:
115
- str: 返回处理器的名称字符串
116
- """
117
- return "PATCH"
118
-
119
- def _parse_patches(self, response: str) -> Dict[str, List[Dict[str, str]]]:
120
- """解析响应中的补丁信息
121
-
122
- 该方法使用正则表达式从响应文本中提取文件编辑指令(PATCH块),
123
- 每个PATCH块可以包含多个DIFF块,每个DIFF块包含一组搜索和替换内容。
124
- 解析后会返回一个字典,键是文件路径,值是该文件对应的补丁列表。
125
- 如果同一个文件路径出现多次,会将所有DIFF块合并到一起。
126
-
127
- Args:
128
- response: 包含补丁信息的响应字符串,格式应符合PATCH指令规范
129
-
130
- Returns:
131
- Dict[str, List[Dict[str, str]]]:
132
- 返回解析后的补丁信息字典,结构为:
133
- {
134
- "文件路径1": [
135
- {"SEARCH": "搜索文本1", "REPLACE": "替换文本1"},
136
- {"SEARCH": "搜索文本2", "REPLACE": "替换文本2"}
137
- ],
138
- "文件路径2": [...]
139
- }
140
- """
141
- patches: Dict[str, List[Dict[str, str]]] = {}
142
- for match in self.patch_pattern.finditer(response):
143
- # Get the file path from the appropriate capture group
144
- file_path = match.group(1) or match.group(2) or match.group(3)
145
- diffs = []
146
- for diff_match in self.diff_pattern.finditer(match.group(0)):
147
- # 完全保留原始格式(包括所有空白和换行)
148
- diffs.append(
149
- {
150
- "SEARCH": diff_match.group(1), # 原始SEARCH内容
151
- "REPLACE": diff_match.group(2), # 原始REPLACE内容
152
- }
153
- )
154
- if diffs:
155
- if file_path in patches:
156
- patches[file_path].extend(diffs)
157
- else:
158
- patches[file_path] = diffs
159
- return patches
160
-
161
- @staticmethod
162
- def _fast_edit(file_path: str, patches: List[Dict[str, str]]) -> Tuple[bool, str]:
163
- """快速应用补丁到文件
164
-
165
- 该方法直接尝试将补丁应用到目标文件,适用于简单、明确的修改场景。
166
- 特点:
167
- 1. 直接进行字符串替换,效率高
168
- 2. 会自动处理缩进问题,尝试匹配不同缩进级别的代码
169
- 3. 确保搜索文本在文件中唯一匹配
170
- 4. 如果部分补丁失败,会继续应用剩余补丁,并报告失败信息
171
-
172
- Args:
173
- file_path: 要修改的文件路径,支持绝对路径和相对路径
174
- patches: 补丁列表,每个补丁包含search(搜索文本)和replace(替换文本)
175
-
176
- Returns:
177
- Tuple[bool, str]:
178
- 返回处理结果元组,第一个元素表示是否所有补丁都成功应用,
179
- 第二个元素为结果信息,全部成功时为修改后的文件内容,部分或全部失败时为错误信息
180
- """
181
- try:
182
- # 确保目录存在
183
- os.makedirs(os.path.dirname(file_path), exist_ok=True)
184
-
185
- # 读取原始文件内容
186
- file_content = ""
187
- if os.path.exists(file_path):
188
- with open(file_path, "r", encoding="utf-8") as f:
189
- file_content = f.read()
190
-
191
- # 应用所有补丁
192
- modified_content = file_content
193
- patch_count = 0
194
- failed_patches: List[Dict[str, Any]] = []
195
- successful_patches = 0
196
-
197
- for patch in patches:
198
- patch_count += 1
199
- search_text = patch["SEARCH"]
200
- replace_text = patch["REPLACE"]
201
-
202
- # 精确匹配搜索文本(保留原始换行和空格)
203
- exact_search = search_text
204
- found = False
205
-
206
- if exact_search in modified_content:
207
- # 直接执行替换(保留所有原始格式),只替换第一个匹配
208
- modified_content = modified_content.replace(
209
- exact_search, replace_text, 1
210
- )
211
-
212
- found = True
213
- else:
214
- # 如果匹配不到,并且search与replace块的首尾都是换行,尝试去掉第一个和最后一个换行
215
- if (
216
- search_text.startswith("\n")
217
- and search_text.endswith("\n")
218
- and replace_text.startswith("\n")
219
- and replace_text.endswith("\n")
220
- ):
221
- stripped_search = search_text[1:-1]
222
- stripped_replace = replace_text[1:-1]
223
- if stripped_search in modified_content:
224
- modified_content = modified_content.replace(
225
- stripped_search, stripped_replace, 1
226
- )
227
-
228
- found = True
229
-
230
- if not found:
231
- # 尝试增加缩进重试
232
- current_search = search_text
233
- current_replace = replace_text
234
- if (
235
- current_search.startswith("\n")
236
- and current_search.endswith("\n")
237
- and current_replace.startswith("\n")
238
- and current_replace.endswith("\n")
239
- ):
240
- current_search = current_search[1:-1]
241
- current_replace = current_replace[1:-1]
242
-
243
- for space_count in range(1, 17):
244
- indented_search = "\n".join(
245
- " " * space_count + line if line.strip() else line
246
- for line in current_search.split("\n")
247
- )
248
- indented_replace = "\n".join(
249
- " " * space_count + line if line.strip() else line
250
- for line in current_replace.split("\n")
251
- )
252
- if indented_search in modified_content:
253
- modified_content = modified_content.replace(
254
- indented_search, indented_replace, 1
255
- )
256
-
257
- found = True
258
- break
259
-
260
- if found:
261
- successful_patches += 1
262
- else:
263
- error_msg = "搜索文本在文件中不存在"
264
-
265
- failed_patches.append({"patch": patch, "error": error_msg})
266
-
267
- # 写入修改后的内容
268
- with open(file_path, "w", encoding="utf-8") as f:
269
- f.write(modified_content)
270
-
271
- if failed_patches:
272
- error_details = [
273
- f" - 失败的补丁: \n{p['patch']['SEARCH']}\n 错误: {p['error']}"
274
- for p in failed_patches
275
- ]
276
- if successful_patches == 0:
277
- summary = (
278
- f"文件 {file_path} 修改失败(全部失败)。\n"
279
- f"失败: {len(failed_patches)}/{patch_count}.\n"
280
- f"失败详情:\n" + "\n".join(error_details)
281
- )
282
- else:
283
- summary = (
284
- f"文件 {file_path} 修改部分成功。\n"
285
- f"成功: {successful_patches}/{patch_count}, "
286
- f"失败: {len(failed_patches)}/{patch_count}.\n"
287
- f"失败详情:\n" + "\n".join(error_details)
288
- )
289
- PrettyOutput.print(summary, OutputType.ERROR)
290
- return False, summary
291
-
292
- return True, modified_content
293
-
294
- except Exception as e:
295
- PrettyOutput.print(f"文件修改失败: {str(e)}", OutputType.ERROR)
296
- return False, f"文件修改失败: {str(e)}"