jarvis-ai-assistant 0.3.6__tar.gz → 0.3.7__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 (134) hide show
  1. {jarvis_ai_assistant-0.3.6/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.3.7}/PKG-INFO +1 -1
  2. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/pyproject.toml +1 -1
  3. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/setup.py +1 -1
  4. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/__init__.py +1 -1
  5. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_utils/git_utils.py +33 -3
  6. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_utils/utils.py +101 -7
  7. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7/src/jarvis_ai_assistant.egg-info}/PKG-INFO +1 -1
  8. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/LICENSE +0 -0
  9. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/MANIFEST.in +0 -0
  10. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/README.md +0 -0
  11. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/setup.cfg +0 -0
  12. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_agent/__init__.py +0 -0
  13. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_agent/agent_manager.py +0 -0
  14. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_agent/builtin_input_handler.py +0 -0
  15. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_agent/config_editor.py +0 -0
  16. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_agent/edit_file_handler.py +0 -0
  17. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_agent/file_methodology_manager.py +0 -0
  18. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_agent/jarvis.py +0 -0
  19. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_agent/main.py +0 -0
  20. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_agent/memory_manager.py +0 -0
  21. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_agent/methodology_share_manager.py +0 -0
  22. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_agent/output_handler.py +0 -0
  23. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_agent/prompt_builder.py +0 -0
  24. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_agent/prompts.py +0 -0
  25. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_agent/protocols.py +0 -0
  26. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_agent/session_manager.py +0 -0
  27. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_agent/share_manager.py +0 -0
  28. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_agent/shell_input_handler.py +0 -0
  29. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_agent/task_analyzer.py +0 -0
  30. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_agent/task_manager.py +0 -0
  31. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_agent/tool_executor.py +0 -0
  32. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_agent/tool_share_manager.py +0 -0
  33. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
  34. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_agent/code_agent.py +0 -0
  35. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_agent/lint.py +0 -0
  36. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +0 -0
  37. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +0 -0
  38. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +0 -0
  39. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +0 -0
  40. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_analysis/checklists/devops.py +0 -0
  41. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_analysis/checklists/docs.py +0 -0
  42. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_analysis/checklists/go.py +0 -0
  43. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +0 -0
  44. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_analysis/checklists/java.py +0 -0
  45. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +0 -0
  46. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +0 -0
  47. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_analysis/checklists/loader.py +0 -0
  48. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_analysis/checklists/php.py +0 -0
  49. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_analysis/checklists/python.py +0 -0
  50. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +0 -0
  51. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_analysis/checklists/rust.py +0 -0
  52. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_analysis/checklists/shell.py +0 -0
  53. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_analysis/checklists/sql.py +0 -0
  54. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_analysis/checklists/swift.py +0 -0
  55. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_analysis/checklists/web.py +0 -0
  56. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_code_analysis/code_review.py +0 -0
  57. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_data/config_schema.json +0 -0
  58. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  59. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_git_squash/__init__.py +0 -0
  60. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_git_squash/main.py +0 -0
  61. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_git_utils/git_commiter.py +0 -0
  62. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_mcp/__init__.py +0 -0
  63. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_mcp/sse_mcp_client.py +0 -0
  64. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_mcp/stdio_mcp_client.py +0 -0
  65. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_mcp/streamable_mcp_client.py +0 -0
  66. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_memory_organizer/__init__.py +0 -0
  67. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_memory_organizer/memory_organizer.py +0 -0
  68. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_methodology/main.py +0 -0
  69. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_multi_agent/__init__.py +0 -0
  70. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_multi_agent/main.py +0 -0
  71. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_platform/__init__.py +0 -0
  72. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_platform/ai8.py +0 -0
  73. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_platform/base.py +0 -0
  74. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_platform/human.py +0 -0
  75. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_platform/kimi.py +0 -0
  76. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_platform/openai.py +0 -0
  77. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_platform/registry.py +0 -0
  78. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_platform/tongyi.py +0 -0
  79. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_platform/yuanbao.py +0 -0
  80. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_platform_manager/__init__.py +0 -0
  81. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_platform_manager/main.py +0 -0
  82. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_platform_manager/service.py +0 -0
  83. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_rag/__init__.py +0 -0
  84. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_rag/cache.py +0 -0
  85. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_rag/cli.py +0 -0
  86. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_rag/embedding_manager.py +0 -0
  87. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_rag/llm_interface.py +0 -0
  88. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_rag/query_rewriter.py +0 -0
  89. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_rag/rag_pipeline.py +0 -0
  90. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_rag/reranker.py +0 -0
  91. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_rag/retriever.py +0 -0
  92. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_smart_shell/__init__.py +0 -0
  93. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_smart_shell/main.py +0 -0
  94. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_stats/__init__.py +0 -0
  95. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_stats/cli.py +0 -0
  96. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_stats/stats.py +0 -0
  97. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_stats/storage.py +0 -0
  98. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_stats/visualizer.py +0 -0
  99. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_tools/__init__.py +0 -0
  100. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_tools/ask_user.py +0 -0
  101. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_tools/base.py +0 -0
  102. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_tools/clear_memory.py +0 -0
  103. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_tools/cli/__init__.py +0 -0
  104. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_tools/cli/main.py +0 -0
  105. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_tools/edit_file.py +0 -0
  106. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_tools/execute_script.py +0 -0
  107. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_tools/file_analyzer.py +0 -0
  108. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_tools/generate_new_tool.py +0 -0
  109. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_tools/methodology.py +0 -0
  110. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_tools/read_code.py +0 -0
  111. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_tools/read_webpage.py +0 -0
  112. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_tools/registry.py +0 -0
  113. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_tools/retrieve_memory.py +0 -0
  114. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_tools/rewrite_file.py +0 -0
  115. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_tools/save_memory.py +0 -0
  116. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_tools/search_web.py +0 -0
  117. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_tools/virtual_tty.py +0 -0
  118. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_utils/__init__.py +0 -0
  119. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_utils/builtin_replace_map.py +0 -0
  120. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_utils/clipboard.py +0 -0
  121. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_utils/config.py +0 -0
  122. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_utils/embedding.py +0 -0
  123. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_utils/file_processors.py +0 -0
  124. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_utils/globals.py +0 -0
  125. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_utils/http.py +0 -0
  126. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_utils/input.py +0 -0
  127. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_utils/methodology.py +0 -0
  128. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_utils/output.py +0 -0
  129. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis/jarvis_utils/tag.py +0 -0
  130. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +0 -0
  131. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
  132. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis_ai_assistant.egg-info/entry_points.txt +0 -0
  133. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/src/jarvis_ai_assistant.egg-info/requires.txt +0 -0
  134. {jarvis_ai_assistant-0.3.6 → jarvis_ai_assistant-0.3.7}/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.6
3
+ Version: 0.3.7
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.6"
7
+ version = "0.3.7"
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.6",
6
+ version="0.3.7",
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.6"
4
+ __version__ = "0.3.7"
@@ -427,10 +427,40 @@ def check_and_update_git_repo(repo_path: str) -> bool:
427
427
  is_uv_env = True
428
428
 
429
429
  # 根据环境选择安装命令
430
- if is_uv_env:
431
- install_cmd = ["uv", "pip", "install", "-e", "."]
430
+ # 检测是否安装了 RAG 特性
431
+ rag_installed = False
432
+ try:
433
+ import langchain # noqa
434
+
435
+ rag_installed = True
436
+ except ImportError:
437
+ pass
438
+
439
+ # 根据环境和 RAG 特性选择安装命令
440
+ if rag_installed:
441
+ if is_uv_env:
442
+ install_cmd = ["uv", "pip", "install", "-e", ".[rag]"]
443
+ else:
444
+ install_cmd = [
445
+ sys.executable,
446
+ "-m",
447
+ "pip",
448
+ "install",
449
+ "-e",
450
+ ".[rag]",
451
+ ]
432
452
  else:
433
- install_cmd = [sys.executable, "-m", "pip", "install", "-e", "."]
453
+ if is_uv_env:
454
+ install_cmd = ["uv", "pip", "install", "-e", "."]
455
+ else:
456
+ install_cmd = [
457
+ sys.executable,
458
+ "-m",
459
+ "pip",
460
+ "install",
461
+ "-e",
462
+ ".",
463
+ ]
434
464
 
435
465
  # 尝试安装
436
466
  result = subprocess.run(
@@ -9,7 +9,7 @@ import sys
9
9
  import time
10
10
  from pathlib import Path
11
11
  from typing import Any, Callable, Dict, List, Optional
12
- from datetime import datetime
12
+ from datetime import datetime, date
13
13
 
14
14
  import yaml # type: ignore
15
15
  from rich.align import Align
@@ -79,16 +79,110 @@ def _setup_signal_handler() -> None:
79
79
  signal.signal(signal.SIGINT, sigint_handler)
80
80
 
81
81
 
82
- def _check_git_updates() -> bool:
83
- """检查并更新git仓库
82
+ def _check_pip_updates() -> bool:
83
+ """检查pip安装的Jarvis是否有更新
84
+
85
+ 返回:
86
+ bool: 是否执行了更新(总是返回False,因为pip更新需要用户手动执行)
87
+ """
88
+ import urllib.request
89
+ import urllib.error
90
+ from packaging import version
91
+
92
+ # 检查上次检查日期
93
+ last_check_file = Path(get_data_dir()) / "last_pip_check"
94
+ today_str = date.today().strftime("%Y-%m-%d")
95
+
96
+ if last_check_file.exists():
97
+ try:
98
+ last_check_date = last_check_file.read_text().strip()
99
+ if last_check_date == today_str:
100
+ return False
101
+ except Exception:
102
+ pass
103
+
104
+ try:
105
+ # 获取PyPI上的最新版本
106
+ url = "https://pypi.org/pypi/jarvis-ai-assistant/json"
107
+ try:
108
+ with urllib.request.urlopen(url, timeout=5) as response:
109
+ data = json.loads(response.read().decode())
110
+ latest_version = data["info"]["version"]
111
+ except (urllib.error.URLError, KeyError, json.JSONDecodeError) as e:
112
+ return False
113
+
114
+ # 比较版本
115
+ current_ver = version.parse(__version__)
116
+ latest_ver = version.parse(latest_version)
117
+
118
+ if latest_ver > current_ver:
119
+ PrettyOutput.print(
120
+ f"检测到新版本 v{latest_version} (当前版本: v{__version__})",
121
+ OutputType.INFO,
122
+ )
123
+
124
+ # 检测是否在虚拟环境中
125
+ in_venv = hasattr(sys, "real_prefix") or (
126
+ hasattr(sys, "base_prefix") and sys.base_prefix != sys.prefix
127
+ )
128
+
129
+ # 检测是否使用uv
130
+ is_uv_env = False
131
+ if in_venv:
132
+ if sys.platform == "win32":
133
+ uv_path = Path(sys.prefix) / "Scripts" / "uv.exe"
134
+ else:
135
+ uv_path = Path(sys.prefix) / "bin" / "uv"
136
+ if uv_path.exists():
137
+ is_uv_env = True
138
+
139
+ # 检测是否安装了 RAG 特性
140
+ rag_installed = False
141
+ try:
142
+ import langchain # noqa
143
+
144
+ rag_installed = True
145
+ except ImportError:
146
+ pass
147
+
148
+ # 提供更新命令
149
+ package_spec = (
150
+ "jarvis-ai-assistant[rag]" if rag_installed else "jarvis-ai-assistant"
151
+ )
152
+ if is_uv_env:
153
+ update_cmd = f"uv pip install --upgrade {package_spec}"
154
+ else:
155
+ update_cmd = f"{sys.executable} -m pip install --upgrade {package_spec}"
156
+
157
+ PrettyOutput.print(f"请手动执行以下命令更新: {update_cmd}", OutputType.INFO)
158
+
159
+ # 更新检查日期
160
+ last_check_file.write_text(today_str)
161
+
162
+ except Exception as e:
163
+ # 静默处理错误,不影响正常使用
164
+ pass
165
+
166
+ return False
167
+
168
+
169
+ def _check_jarvis_updates() -> bool:
170
+ """检查并更新Jarvis本身(git仓库或pip包)
84
171
 
85
172
  返回:
86
173
  bool: 是否需要重启进程
87
174
  """
88
175
  script_dir = Path(os.path.dirname(os.path.dirname(__file__)))
89
- from jarvis.jarvis_utils.git_utils import check_and_update_git_repo
90
176
 
91
- return check_and_update_git_repo(str(script_dir))
177
+ # 先检查是否是git源码安装
178
+ git_dir = script_dir / ".git"
179
+ if git_dir.exists():
180
+ from jarvis.jarvis_utils.git_utils import check_and_update_git_repo
181
+
182
+ return check_and_update_git_repo(str(script_dir))
183
+
184
+ # 检查是否是pip/uv pip安装的版本
185
+ return _check_pip_updates()
92
186
 
93
187
 
94
188
  def _show_usage_stats(welcome_str: str) -> None:
@@ -531,8 +625,8 @@ def init_env(welcome_str: str, config_file: Optional[str] = None) -> None:
531
625
  if welcome_str:
532
626
  _show_usage_stats(welcome_str)
533
627
 
534
- # 5. 检查git更新
535
- if _check_git_updates():
628
+ # 5. 检查Jarvis更新
629
+ if _check_jarvis_updates():
536
630
  os.execv(sys.executable, [sys.executable] + sys.argv)
537
631
  sys.exit(0)
538
632
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.3.6
3
+ Version: 0.3.7
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