jarvis-ai-assistant 0.4.2__tar.gz → 0.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. {jarvis_ai_assistant-0.4.2/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.5.0}/PKG-INFO +1 -1
  2. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/pyproject.toml +1 -1
  3. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/setup.py +1 -1
  4. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/__init__.py +1 -1
  5. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/__init__.py +15 -1
  6. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/share_manager.py +8 -1
  7. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_agent/code_agent.py +91 -2
  8. jarvis_ai_assistant-0.5.0/src/jarvis/jarvis_code_analysis/code_review.py +845 -0
  9. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_data/config_schema.json +2 -2
  10. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_tools/registry.py +20 -14
  11. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_utils/methodology.py +25 -19
  12. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_utils/utils.py +58 -2
  13. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0/src/jarvis_ai_assistant.egg-info}/PKG-INFO +1 -1
  14. jarvis_ai_assistant-0.4.2/src/jarvis/jarvis_code_analysis/code_review.py +0 -930
  15. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/LICENSE +0 -0
  16. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/MANIFEST.in +0 -0
  17. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/README.md +0 -0
  18. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/setup.cfg +0 -0
  19. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/agent_manager.py +0 -0
  20. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/builtin_input_handler.py +0 -0
  21. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/config_editor.py +0 -0
  22. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/edit_file_handler.py +0 -0
  23. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/event_bus.py +0 -0
  24. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/events.py +0 -0
  25. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/file_context_handler.py +0 -0
  26. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/file_methodology_manager.py +0 -0
  27. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/jarvis.py +0 -0
  28. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/main.py +0 -0
  29. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/memory_manager.py +0 -0
  30. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/methodology_share_manager.py +0 -0
  31. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/output_handler.py +0 -0
  32. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/prompt_builder.py +0 -0
  33. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/prompt_manager.py +0 -0
  34. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/prompts.py +0 -0
  35. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/protocols.py +0 -0
  36. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/rewrite_file_handler.py +0 -0
  37. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/run_loop.py +0 -0
  38. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/session_manager.py +0 -0
  39. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/shell_input_handler.py +0 -0
  40. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/stdio_redirect.py +0 -0
  41. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/task_analyzer.py +0 -0
  42. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/task_manager.py +0 -0
  43. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/tool_executor.py +0 -0
  44. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/tool_share_manager.py +0 -0
  45. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/user_interaction.py +0 -0
  46. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/utils.py +0 -0
  47. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/web_bridge.py +0 -0
  48. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/web_output_sink.py +0 -0
  49. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_agent/web_server.py +0 -0
  50. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
  51. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_agent/lint.py +0 -0
  52. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +0 -0
  53. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +0 -0
  54. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +0 -0
  55. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +0 -0
  56. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_analysis/checklists/devops.py +0 -0
  57. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_analysis/checklists/docs.py +0 -0
  58. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_analysis/checklists/go.py +0 -0
  59. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +0 -0
  60. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_analysis/checklists/java.py +0 -0
  61. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +0 -0
  62. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +0 -0
  63. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_analysis/checklists/loader.py +0 -0
  64. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_analysis/checklists/php.py +0 -0
  65. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_analysis/checklists/python.py +0 -0
  66. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +0 -0
  67. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_analysis/checklists/rust.py +0 -0
  68. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_analysis/checklists/shell.py +0 -0
  69. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_analysis/checklists/sql.py +0 -0
  70. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_analysis/checklists/swift.py +0 -0
  71. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_code_analysis/checklists/web.py +0 -0
  72. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  73. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_git_squash/__init__.py +0 -0
  74. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_git_squash/main.py +0 -0
  75. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_git_utils/git_commiter.py +0 -0
  76. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_mcp/__init__.py +0 -0
  77. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_mcp/sse_mcp_client.py +0 -0
  78. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_mcp/stdio_mcp_client.py +0 -0
  79. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_mcp/streamable_mcp_client.py +0 -0
  80. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_memory_organizer/__init__.py +0 -0
  81. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_memory_organizer/memory_organizer.py +0 -0
  82. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_methodology/main.py +0 -0
  83. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_multi_agent/__init__.py +0 -0
  84. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_multi_agent/main.py +0 -0
  85. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_platform/__init__.py +0 -0
  86. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_platform/ai8.py +0 -0
  87. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_platform/base.py +0 -0
  88. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_platform/human.py +0 -0
  89. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_platform/kimi.py +0 -0
  90. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_platform/openai.py +0 -0
  91. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_platform/registry.py +0 -0
  92. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_platform/tongyi.py +0 -0
  93. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_platform/yuanbao.py +0 -0
  94. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_platform_manager/__init__.py +0 -0
  95. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_platform_manager/main.py +0 -0
  96. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_platform_manager/service.py +0 -0
  97. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_rag/__init__.py +0 -0
  98. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_rag/cache.py +0 -0
  99. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_rag/cli.py +0 -0
  100. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_rag/embedding_manager.py +0 -0
  101. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_rag/llm_interface.py +0 -0
  102. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_rag/query_rewriter.py +0 -0
  103. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_rag/rag_pipeline.py +0 -0
  104. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_rag/reranker.py +0 -0
  105. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_rag/retriever.py +0 -0
  106. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_smart_shell/__init__.py +0 -0
  107. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_smart_shell/main.py +0 -0
  108. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_stats/__init__.py +0 -0
  109. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_stats/cli.py +0 -0
  110. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_stats/stats.py +0 -0
  111. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_stats/storage.py +0 -0
  112. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_stats/visualizer.py +0 -0
  113. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_tools/__init__.py +0 -0
  114. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_tools/ask_user.py +0 -0
  115. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_tools/base.py +0 -0
  116. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_tools/clear_memory.py +0 -0
  117. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_tools/cli/__init__.py +0 -0
  118. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_tools/cli/main.py +0 -0
  119. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_tools/execute_script.py +0 -0
  120. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_tools/file_analyzer.py +0 -0
  121. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_tools/generate_new_tool.py +0 -0
  122. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_tools/methodology.py +0 -0
  123. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_tools/read_code.py +0 -0
  124. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_tools/read_webpage.py +0 -0
  125. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_tools/retrieve_memory.py +0 -0
  126. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_tools/save_memory.py +0 -0
  127. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_tools/search_web.py +0 -0
  128. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_tools/sub_agent.py +0 -0
  129. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_tools/sub_code_agent.py +0 -0
  130. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_tools/virtual_tty.py +0 -0
  131. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_utils/__init__.py +0 -0
  132. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_utils/builtin_replace_map.py +0 -0
  133. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_utils/clipboard.py +0 -0
  134. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_utils/config.py +0 -0
  135. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_utils/embedding.py +0 -0
  136. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_utils/file_processors.py +0 -0
  137. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_utils/fzf.py +0 -0
  138. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_utils/git_utils.py +0 -0
  139. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_utils/globals.py +0 -0
  140. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_utils/http.py +0 -0
  141. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_utils/input.py +0 -0
  142. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_utils/output.py +0 -0
  143. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis/jarvis_utils/tag.py +0 -0
  144. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +0 -0
  145. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
  146. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis_ai_assistant.egg-info/entry_points.txt +0 -0
  147. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis_ai_assistant.egg-info/requires.txt +0 -0
  148. {jarvis_ai_assistant-0.4.2 → jarvis_ai_assistant-0.5.0}/src/jarvis_ai_assistant.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.4.2
3
+ Version: 0.5.0
4
4
  Summary: Jarvis: An AI assistant that uses tools to interact with the system
5
5
  Home-page: https://github.com/skyfireitdiy/Jarvis
6
6
  Author: skyfire
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "jarvis-ai-assistant"
7
- version = "0.4.2"
7
+ version = "0.5.0"
8
8
  description = "Jarvis: An AI assistant that uses tools to interact with the system"
9
9
  readme = "README.md"
10
10
  authors = [{ name = "skyfire", email = "skyfireitdiy@hotmail.com" }]
@@ -3,7 +3,7 @@ from setuptools import setup, find_packages # type: ignore
3
3
 
4
4
  setup(
5
5
  name="jarvis-ai-assistant",
6
- version="0.4.2",
6
+ version="0.5.0",
7
7
  author="skyfire",
8
8
  author_email="skyfireitdiy@hotmail.com",
9
9
  description="An AI assistant that uses various tools to interact with the system",
@@ -1,4 +1,4 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  """Jarvis AI Assistant"""
3
3
 
4
- __version__ = "0.4.2"
4
+ __version__ = "0.5.0"
@@ -249,8 +249,23 @@ class Agent:
249
249
  def clear_history(self):
250
250
  """
251
251
  Clears the current conversation history by delegating to the session manager.
252
+ Emits BEFORE_HISTORY_CLEAR/AFTER_HISTORY_CLEAR and reapplies system prompt to preserve constraints.
252
253
  """
254
+ # 广播清理历史前事件(不影响主流程)
255
+ try:
256
+ self.event_bus.emit(BEFORE_HISTORY_CLEAR, agent=self)
257
+ except Exception:
258
+ pass
259
+
260
+ # 清理会话历史并重置模型状态
253
261
  self.session.clear_history()
262
+
263
+ # 重置后重新设置系统提示词,确保系统约束仍然生效
264
+ try:
265
+ self._setup_system_prompt()
266
+ except Exception:
267
+ pass
268
+
254
269
  # 广播清理历史后的事件
255
270
  try:
256
271
  self.event_bus.emit(AFTER_HISTORY_CLEAR, agent=self)
@@ -1003,7 +1018,6 @@ class Agent:
1003
1018
  {complete_prompt}
1004
1019
  如果没有完成,请进行下一步操作:
1005
1020
  - 仅包含一个操作
1006
- - 不要询问用户是否继续,直接继续执行直至完成
1007
1021
  - 如果信息不明确,请请求用户补充
1008
1022
  - 如果执行过程中连续失败5次,请使用ask_user询问用户操作
1009
1023
  - 操作列表:{action_handlers}{memory_prompts}
@@ -49,7 +49,14 @@ class ShareManager(ABC):
49
49
  def __init__(self, central_repo_url: str, repo_name: str):
50
50
  self.central_repo_url = central_repo_url
51
51
  self.repo_name = repo_name
52
- self.repo_path = os.path.join(get_data_dir(), repo_name)
52
+ # 支持将中心仓库配置为本地目录(含git子路径)
53
+ expanded = os.path.expanduser(os.path.expandvars(central_repo_url))
54
+ if os.path.isdir(expanded):
55
+ # 直接使用本地目录作为中心仓库路径(支持git仓库子目录)
56
+ self.repo_path = expanded
57
+ else:
58
+ # 仍按原逻辑使用数据目录中的克隆路径
59
+ self.repo_path = os.path.join(get_data_dir(), repo_name)
53
60
 
54
61
  def update_central_repo(self) -> None:
55
62
  """克隆或更新中心仓库"""
@@ -25,6 +25,7 @@ from jarvis.jarvis_utils.config import (
25
25
  is_enable_static_analysis,
26
26
  get_git_check_mode,
27
27
  set_config,
28
+ get_data_dir,
28
29
  )
29
30
  from jarvis.jarvis_utils.git_utils import (
30
31
  confirm_add_new_files,
@@ -86,6 +87,22 @@ class CodeAgent:
86
87
 
87
88
  tool_registry.use_tools(base_tools)
88
89
  code_system_prompt = self._get_system_prompt()
90
+ # 先加载全局规则(数据目录 rules),再加载项目规则(.jarvis/rules),并拼接为单一规则块注入
91
+ global_rules = self._read_global_rules()
92
+ project_rules = self._read_project_rules()
93
+
94
+ combined_parts: List[str] = []
95
+ if global_rules:
96
+ combined_parts.append(global_rules)
97
+ if project_rules:
98
+ combined_parts.append(project_rules)
99
+
100
+ if combined_parts:
101
+ merged_rules = "\n\n".join(combined_parts)
102
+ code_system_prompt = (
103
+ f"{code_system_prompt}\n\n"
104
+ f"<rules>\n{merged_rules}\n</rules>"
105
+ )
89
106
  self.agent = Agent(
90
107
  system_prompt=code_system_prompt,
91
108
  name="CodeAgent",
@@ -164,6 +181,32 @@ class CodeAgent:
164
181
  </say_to_llm>
165
182
  """
166
183
 
184
+ def _read_project_rules(self) -> Optional[str]:
185
+ """读取 .jarvis/rules 内容,如果存在则返回字符串,否则返回 None"""
186
+ try:
187
+ rules_path = os.path.join(self.root_dir, ".jarvis", "rules")
188
+ if os.path.exists(rules_path) and os.path.isfile(rules_path):
189
+ with open(rules_path, "r", encoding="utf-8", errors="replace") as f:
190
+ content = f.read().strip()
191
+ return content if content else None
192
+ except Exception:
193
+ # 读取规则失败时忽略,不影响主流程
194
+ pass
195
+ return None
196
+
197
+ def _read_global_rules(self) -> Optional[str]:
198
+ """读取数据目录 rules 内容,如果存在则返回字符串,否则返回 None"""
199
+ try:
200
+ rules_path = os.path.join(get_data_dir(), "rules")
201
+ if os.path.exists(rules_path) and os.path.isfile(rules_path):
202
+ with open(rules_path, "r", encoding="utf-8", errors="replace") as f:
203
+ content = f.read().strip()
204
+ return content if content else None
205
+ except Exception:
206
+ # 读取规则失败时忽略,不影响主流程
207
+ pass
208
+ return None
209
+
167
210
  def _check_git_config(self) -> None:
168
211
  """检查 git username 和 email 是否已设置,如果没有则提示并退出"""
169
212
  try:
@@ -672,12 +715,58 @@ class CodeAgent:
672
715
  def _build_per_file_patch_preview(modified_files: List[str]) -> str:
673
716
  status_map = _build_name_status_map()
674
717
  lines: List[str] = []
718
+
719
+ def _get_file_numstat(file_path: str) -> Tuple[int, int]:
720
+ """获取单文件的新增/删除行数,失败时返回(0,0)"""
721
+ head_exists = bool(get_latest_commit_hash())
722
+ try:
723
+ # 让未跟踪文件也能统计到新增行数
724
+ subprocess.run(["git", "add", "-N", "--", file_path], check=False, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
725
+ cmd = ["git", "diff", "--numstat"] + (["HEAD"] if head_exists else []) + ["--", file_path]
726
+ res = subprocess.run(
727
+ cmd,
728
+ capture_output=True,
729
+ text=True,
730
+ encoding="utf-8",
731
+ errors="replace",
732
+ check=False,
733
+ )
734
+ if res.returncode == 0 and res.stdout:
735
+ for line in res.stdout.splitlines():
736
+ parts = line.strip().split("\t")
737
+ if len(parts) >= 3:
738
+ add_s, del_s = parts[0], parts[1]
739
+
740
+ def to_int(x: str) -> int:
741
+ try:
742
+ return int(x)
743
+ except Exception:
744
+ # 二进制或无法解析时显示为0
745
+ return 0
746
+
747
+ return to_int(add_s), to_int(del_s)
748
+ finally:
749
+ subprocess.run(["git", "reset", "--", file_path], check=False, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
750
+ return (0, 0)
751
+
675
752
  for f in modified_files:
676
753
  status = status_map.get(f, "")
677
- # 删除文件:不展示diff,仅提示
754
+ adds, dels = _get_file_numstat(f)
755
+ total_changes = adds + dels
756
+
757
+ # 删除文件:不展示diff,仅提示(附带删除行数信息如果可用)
678
758
  if (status.startswith("D")) or (not os.path.exists(f)):
679
- lines.append(f"- {f} 文件被删除")
759
+ if dels > 0:
760
+ lines.append(f"- {f} 文件被删除(删除{dels}行)")
761
+ else:
762
+ lines.append(f"- {f} 文件被删除")
680
763
  continue
764
+
765
+ # 变更过大:仅提示新增/删除行数,避免输出超长diff
766
+ if total_changes > 300:
767
+ lines.append(f"- {f} 新增{adds}行/删除{dels}行(变更过大,预览已省略)")
768
+ continue
769
+
681
770
  # 其它情况:展示该文件的diff
682
771
  file_diff = _get_file_diff(f)
683
772
  if file_diff.strip():