jarvis-ai-assistant 0.3.25__tar.gz → 0.3.26__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 (136) hide show
  1. {jarvis_ai_assistant-0.3.25/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.3.26}/PKG-INFO +1 -1
  2. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/pyproject.toml +1 -1
  3. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/setup.py +1 -1
  4. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/__init__.py +1 -1
  5. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_agent/__init__.py +4 -0
  6. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_rag/cli.py +5 -9
  7. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_utils/git_utils.py +3 -8
  8. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_utils/utils.py +40 -8
  9. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26/src/jarvis_ai_assistant.egg-info}/PKG-INFO +1 -1
  10. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/LICENSE +0 -0
  11. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/MANIFEST.in +0 -0
  12. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/README.md +0 -0
  13. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/setup.cfg +0 -0
  14. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_agent/agent_manager.py +0 -0
  15. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_agent/builtin_input_handler.py +0 -0
  16. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_agent/config_editor.py +0 -0
  17. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_agent/edit_file_handler.py +0 -0
  18. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_agent/file_methodology_manager.py +0 -0
  19. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_agent/jarvis.py +0 -0
  20. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_agent/main.py +0 -0
  21. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_agent/memory_manager.py +0 -0
  22. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_agent/methodology_share_manager.py +0 -0
  23. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_agent/output_handler.py +0 -0
  24. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_agent/prompt_builder.py +0 -0
  25. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_agent/prompts.py +0 -0
  26. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_agent/protocols.py +0 -0
  27. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_agent/session_manager.py +0 -0
  28. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_agent/share_manager.py +0 -0
  29. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_agent/shell_input_handler.py +0 -0
  30. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_agent/task_analyzer.py +0 -0
  31. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_agent/task_manager.py +0 -0
  32. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_agent/tool_executor.py +0 -0
  33. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_agent/tool_share_manager.py +0 -0
  34. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
  35. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_agent/code_agent.py +0 -0
  36. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_agent/lint.py +0 -0
  37. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +0 -0
  38. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +0 -0
  39. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +0 -0
  40. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +0 -0
  41. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_analysis/checklists/devops.py +0 -0
  42. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_analysis/checklists/docs.py +0 -0
  43. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_analysis/checklists/go.py +0 -0
  44. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +0 -0
  45. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_analysis/checklists/java.py +0 -0
  46. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +0 -0
  47. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +0 -0
  48. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_analysis/checklists/loader.py +0 -0
  49. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_analysis/checklists/php.py +0 -0
  50. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_analysis/checklists/python.py +0 -0
  51. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +0 -0
  52. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_analysis/checklists/rust.py +0 -0
  53. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_analysis/checklists/shell.py +0 -0
  54. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_analysis/checklists/sql.py +0 -0
  55. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_analysis/checklists/swift.py +0 -0
  56. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_analysis/checklists/web.py +0 -0
  57. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_code_analysis/code_review.py +0 -0
  58. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_data/config_schema.json +0 -0
  59. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  60. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_git_squash/__init__.py +0 -0
  61. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_git_squash/main.py +0 -0
  62. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_git_utils/git_commiter.py +0 -0
  63. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_mcp/__init__.py +0 -0
  64. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_mcp/sse_mcp_client.py +0 -0
  65. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_mcp/stdio_mcp_client.py +0 -0
  66. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_mcp/streamable_mcp_client.py +0 -0
  67. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_memory_organizer/__init__.py +0 -0
  68. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_memory_organizer/memory_organizer.py +0 -0
  69. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_methodology/main.py +0 -0
  70. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_multi_agent/__init__.py +0 -0
  71. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_multi_agent/main.py +0 -0
  72. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_platform/__init__.py +0 -0
  73. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_platform/ai8.py +0 -0
  74. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_platform/base.py +0 -0
  75. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_platform/human.py +0 -0
  76. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_platform/kimi.py +0 -0
  77. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_platform/openai.py +0 -0
  78. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_platform/registry.py +0 -0
  79. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_platform/tongyi.py +0 -0
  80. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_platform/yuanbao.py +0 -0
  81. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_platform_manager/__init__.py +0 -0
  82. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_platform_manager/main.py +0 -0
  83. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_platform_manager/service.py +0 -0
  84. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_rag/__init__.py +0 -0
  85. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_rag/cache.py +0 -0
  86. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_rag/embedding_manager.py +0 -0
  87. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_rag/llm_interface.py +0 -0
  88. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_rag/query_rewriter.py +0 -0
  89. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_rag/rag_pipeline.py +0 -0
  90. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_rag/reranker.py +0 -0
  91. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_rag/retriever.py +0 -0
  92. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_smart_shell/__init__.py +0 -0
  93. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_smart_shell/main.py +0 -0
  94. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_stats/__init__.py +0 -0
  95. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_stats/cli.py +0 -0
  96. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_stats/stats.py +0 -0
  97. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_stats/storage.py +0 -0
  98. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_stats/visualizer.py +0 -0
  99. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_tools/__init__.py +0 -0
  100. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_tools/ask_user.py +0 -0
  101. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_tools/base.py +0 -0
  102. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_tools/clear_memory.py +0 -0
  103. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_tools/cli/__init__.py +0 -0
  104. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_tools/cli/main.py +0 -0
  105. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_tools/edit_file.py +0 -0
  106. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_tools/execute_script.py +0 -0
  107. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_tools/file_analyzer.py +0 -0
  108. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_tools/generate_new_tool.py +0 -0
  109. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_tools/methodology.py +0 -0
  110. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_tools/read_code.py +0 -0
  111. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_tools/read_webpage.py +0 -0
  112. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_tools/registry.py +0 -0
  113. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_tools/retrieve_memory.py +0 -0
  114. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_tools/rewrite_file.py +0 -0
  115. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_tools/save_memory.py +0 -0
  116. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_tools/search_web.py +0 -0
  117. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_tools/sub_agent.py +0 -0
  118. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_tools/sub_code_agent.py +0 -0
  119. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_tools/virtual_tty.py +0 -0
  120. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_utils/__init__.py +0 -0
  121. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_utils/builtin_replace_map.py +0 -0
  122. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_utils/clipboard.py +0 -0
  123. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_utils/config.py +0 -0
  124. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_utils/embedding.py +0 -0
  125. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_utils/file_processors.py +0 -0
  126. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_utils/globals.py +0 -0
  127. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_utils/http.py +0 -0
  128. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_utils/input.py +0 -0
  129. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_utils/methodology.py +0 -0
  130. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_utils/output.py +0 -0
  131. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis/jarvis_utils/tag.py +0 -0
  132. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +0 -0
  133. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
  134. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis_ai_assistant.egg-info/entry_points.txt +0 -0
  135. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/src/jarvis_ai_assistant.egg-info/requires.txt +0 -0
  136. {jarvis_ai_assistant-0.3.25 → jarvis_ai_assistant-0.3.26}/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.3.25
3
+ Version: 0.3.26
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.3.25"
7
+ version = "0.3.26"
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.3.25",
6
+ version="0.3.26",
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.3.25"
4
+ __version__ = "0.3.26"
@@ -662,6 +662,10 @@ class Agent:
662
662
  if self.use_analysis:
663
663
  self.task_analyzer.analysis_task(satisfaction_feedback)
664
664
 
665
+ # 当开启强制保存记忆时,在分析步骤之后触发一次记忆保存
666
+ if self.force_save_memory:
667
+ self.memory_manager.prompt_memory_save()
668
+
665
669
  self._check_and_organize_memory()
666
670
 
667
671
  if self.need_summary:
@@ -14,7 +14,7 @@ from langchain_community.document_loaders import (
14
14
  from langchain_core.document_loaders.base import BaseLoader
15
15
  from rich.markdown import Markdown
16
16
 
17
- from jarvis.jarvis_utils.utils import init_env
17
+ from jarvis.jarvis_utils.utils import init_env, is_rag_installed, get_missing_rag_modules
18
18
  from jarvis.jarvis_utils.config import (
19
19
  get_rag_embedding_model,
20
20
  get_rag_use_bm25,
@@ -469,19 +469,15 @@ def query(
469
469
  raise typer.Exit(code=1)
470
470
 
471
471
 
472
- _RAG_INSTALLED = False
473
- try:
474
- import langchain # noqa
475
472
 
476
- _RAG_INSTALLED = True
477
- except ImportError:
478
- pass
479
473
 
480
474
 
481
475
  def _check_rag_dependencies():
482
- if not _RAG_INSTALLED:
476
+ if not is_rag_installed():
477
+ missing = get_missing_rag_modules()
478
+ missing_str = f"缺少依赖: {', '.join(missing)}。" if missing else ""
483
479
  PrettyOutput.print(
484
- "RAG依赖项未安装。请运行 'pip install \"jarvis-ai-assistant[rag]\"' 来使用此命令。",
480
+ f"RAG依赖项未安装或不完整。{missing_str}请运行 'pip install \"jarvis-ai-assistant[rag]\"' 后重试。",
485
481
  OutputType.ERROR,
486
482
  )
487
483
  raise typer.Exit(code=1)
@@ -19,6 +19,7 @@ from typing import Any, Dict, List, Set, Tuple
19
19
  from jarvis.jarvis_utils.config import get_data_dir, is_confirm_before_apply_patch
20
20
  from jarvis.jarvis_utils.output import OutputType, PrettyOutput
21
21
  from jarvis.jarvis_utils.input import user_confirm
22
+ from jarvis.jarvis_utils.utils import is_rag_installed
22
23
 
23
24
 
24
25
  def find_git_root_and_cd(start_dir: str = ".") -> str:
@@ -427,14 +428,8 @@ def check_and_update_git_repo(repo_path: str) -> bool:
427
428
  is_uv_env = True
428
429
 
429
430
  # 根据环境选择安装命令
430
- # 检测是否安装了 RAG 特性
431
- rag_installed = False
432
- try:
433
- import langchain # noqa
434
-
435
- rag_installed = True
436
- except ImportError:
437
- pass
431
+ # 检测是否安装了 RAG 特性(更精确)
432
+ rag_installed = is_rag_installed()
438
433
 
439
434
  # 根据环境和 RAG 特性选择安装命令
440
435
  if rag_installed:
@@ -65,6 +65,41 @@ COMMAND_MAPPING = {
65
65
  "jmo": "jarvis-memory-organizer",
66
66
  }
67
67
 
68
+ # RAG 依赖检测工具函数(更精确)
69
+ _RAG_REQUIRED_MODULES = [
70
+ "langchain",
71
+ "langchain_community",
72
+ "chromadb",
73
+ "sentence_transformers",
74
+ "rank_bm25",
75
+ "unstructured",
76
+ ]
77
+ _RAG_OPTIONAL_MODULES = [
78
+ "langchain_huggingface",
79
+ ]
80
+
81
+
82
+ def get_missing_rag_modules() -> List[str]:
83
+ """
84
+ 返回缺失的 RAG 关键依赖模块列表。
85
+ 仅检查必要模块,不导入模块,避免副作用。
86
+ """
87
+ try:
88
+ from importlib.util import find_spec
89
+
90
+ missing = [m for m in _RAG_REQUIRED_MODULES if find_spec(m) is None]
91
+ return missing
92
+ except Exception:
93
+ # 任何异常都视为无法确认,保持保守策略
94
+ return _RAG_REQUIRED_MODULES[:] # 视为全部缺失
95
+
96
+
97
+ def is_rag_installed() -> bool:
98
+ """
99
+ 更准确的 RAG 安装检测:确认关键依赖模块均可用。
100
+ """
101
+ return len(get_missing_rag_modules()) == 0
102
+
68
103
 
69
104
  def _setup_signal_handler() -> None:
70
105
  """设置SIGINT信号处理函数"""
@@ -139,14 +174,11 @@ def _check_pip_updates() -> bool:
139
174
  if uv_path.exists():
140
175
  is_uv_env = True
141
176
 
142
- # 检测是否安装了 RAG 特性
143
- rag_installed = False
144
- try:
145
- import langchain # type: ignore # noqa
146
-
147
- rag_installed = True
148
- except ImportError:
149
- pass
177
+ # 检测是否安装了 RAG 特性(更精确)
178
+ from jarvis.jarvis_utils.utils import (
179
+ is_rag_installed as _is_rag_installed,
180
+ ) # 延迟导入避免潜在循环依赖
181
+ rag_installed = _is_rag_installed()
150
182
 
151
183
  # 提供更新命令
152
184
  package_spec = (
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.3.25
3
+ Version: 0.3.26
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