jarvis-ai-assistant 0.3.12__tar.gz → 0.3.14__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.12/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.3.14}/PKG-INFO +1 -1
  2. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/pyproject.toml +1 -1
  3. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/setup.py +1 -1
  4. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/__init__.py +1 -1
  5. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_agent/__init__.py +47 -24
  6. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_agent/builtin_input_handler.py +1 -1
  7. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_agent/session_manager.py +0 -8
  8. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_agent/code_agent.py +25 -17
  9. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14/src/jarvis_ai_assistant.egg-info}/PKG-INFO +1 -1
  10. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/LICENSE +0 -0
  11. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/MANIFEST.in +0 -0
  12. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/README.md +0 -0
  13. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/setup.cfg +0 -0
  14. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_agent/agent_manager.py +0 -0
  15. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_agent/config_editor.py +0 -0
  16. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_agent/edit_file_handler.py +0 -0
  17. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_agent/file_methodology_manager.py +0 -0
  18. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_agent/jarvis.py +0 -0
  19. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_agent/main.py +0 -0
  20. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_agent/memory_manager.py +0 -0
  21. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_agent/methodology_share_manager.py +0 -0
  22. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_agent/output_handler.py +0 -0
  23. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_agent/prompt_builder.py +0 -0
  24. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_agent/prompts.py +0 -0
  25. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_agent/protocols.py +0 -0
  26. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_agent/share_manager.py +0 -0
  27. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_agent/shell_input_handler.py +0 -0
  28. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_agent/task_analyzer.py +0 -0
  29. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_agent/task_manager.py +0 -0
  30. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_agent/tool_executor.py +0 -0
  31. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_agent/tool_share_manager.py +0 -0
  32. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
  33. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_agent/lint.py +0 -0
  34. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +0 -0
  35. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +0 -0
  36. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +0 -0
  37. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +0 -0
  38. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_analysis/checklists/devops.py +0 -0
  39. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_analysis/checklists/docs.py +0 -0
  40. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_analysis/checklists/go.py +0 -0
  41. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +0 -0
  42. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_analysis/checklists/java.py +0 -0
  43. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +0 -0
  44. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +0 -0
  45. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_analysis/checklists/loader.py +0 -0
  46. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_analysis/checklists/php.py +0 -0
  47. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_analysis/checklists/python.py +0 -0
  48. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +0 -0
  49. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_analysis/checklists/rust.py +0 -0
  50. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_analysis/checklists/shell.py +0 -0
  51. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_analysis/checklists/sql.py +0 -0
  52. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_analysis/checklists/swift.py +0 -0
  53. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_analysis/checklists/web.py +0 -0
  54. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_code_analysis/code_review.py +0 -0
  55. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_data/config_schema.json +0 -0
  56. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  57. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_git_squash/__init__.py +0 -0
  58. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_git_squash/main.py +0 -0
  59. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_git_utils/git_commiter.py +0 -0
  60. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_mcp/__init__.py +0 -0
  61. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_mcp/sse_mcp_client.py +0 -0
  62. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_mcp/stdio_mcp_client.py +0 -0
  63. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_mcp/streamable_mcp_client.py +0 -0
  64. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_memory_organizer/__init__.py +0 -0
  65. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_memory_organizer/memory_organizer.py +0 -0
  66. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_methodology/main.py +0 -0
  67. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_multi_agent/__init__.py +0 -0
  68. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_multi_agent/main.py +0 -0
  69. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_platform/__init__.py +0 -0
  70. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_platform/ai8.py +0 -0
  71. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_platform/base.py +0 -0
  72. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_platform/human.py +0 -0
  73. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_platform/kimi.py +0 -0
  74. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_platform/openai.py +0 -0
  75. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_platform/registry.py +0 -0
  76. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_platform/tongyi.py +0 -0
  77. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_platform/yuanbao.py +0 -0
  78. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_platform_manager/__init__.py +0 -0
  79. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_platform_manager/main.py +0 -0
  80. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_platform_manager/service.py +0 -0
  81. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_rag/__init__.py +0 -0
  82. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_rag/cache.py +0 -0
  83. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_rag/cli.py +0 -0
  84. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_rag/embedding_manager.py +0 -0
  85. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_rag/llm_interface.py +0 -0
  86. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_rag/query_rewriter.py +0 -0
  87. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_rag/rag_pipeline.py +0 -0
  88. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_rag/reranker.py +0 -0
  89. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_rag/retriever.py +0 -0
  90. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_smart_shell/__init__.py +0 -0
  91. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_smart_shell/main.py +0 -0
  92. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_stats/__init__.py +0 -0
  93. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_stats/cli.py +0 -0
  94. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_stats/stats.py +0 -0
  95. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_stats/storage.py +0 -0
  96. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_stats/visualizer.py +0 -0
  97. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_tools/__init__.py +0 -0
  98. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_tools/ask_user.py +0 -0
  99. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_tools/base.py +0 -0
  100. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_tools/clear_memory.py +0 -0
  101. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_tools/cli/__init__.py +0 -0
  102. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_tools/cli/main.py +0 -0
  103. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_tools/edit_file.py +0 -0
  104. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_tools/execute_script.py +0 -0
  105. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_tools/file_analyzer.py +0 -0
  106. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_tools/generate_new_tool.py +0 -0
  107. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_tools/methodology.py +0 -0
  108. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_tools/read_code.py +0 -0
  109. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_tools/read_webpage.py +0 -0
  110. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_tools/registry.py +0 -0
  111. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_tools/retrieve_memory.py +0 -0
  112. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_tools/rewrite_file.py +0 -0
  113. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_tools/save_memory.py +0 -0
  114. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_tools/search_web.py +0 -0
  115. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_tools/virtual_tty.py +0 -0
  116. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_utils/__init__.py +0 -0
  117. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_utils/builtin_replace_map.py +0 -0
  118. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_utils/clipboard.py +0 -0
  119. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_utils/config.py +0 -0
  120. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_utils/embedding.py +0 -0
  121. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_utils/file_processors.py +0 -0
  122. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_utils/git_utils.py +0 -0
  123. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_utils/globals.py +0 -0
  124. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_utils/http.py +0 -0
  125. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_utils/input.py +0 -0
  126. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_utils/methodology.py +0 -0
  127. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_utils/output.py +0 -0
  128. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_utils/tag.py +0 -0
  129. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis/jarvis_utils/utils.py +0 -0
  130. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +0 -0
  131. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
  132. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis_ai_assistant.egg-info/entry_points.txt +0 -0
  133. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/src/jarvis_ai_assistant.egg-info/requires.txt +0 -0
  134. {jarvis_ai_assistant-0.3.12 → jarvis_ai_assistant-0.3.14}/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.12
3
+ Version: 0.3.14
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.12"
7
+ version = "0.3.14"
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.12",
6
+ version="0.3.14",
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.12"
4
+ __version__ = "0.3.14"
@@ -51,10 +51,12 @@ from jarvis.jarvis_utils.globals import (
51
51
  )
52
52
  from jarvis.jarvis_utils.input import get_multiline_input, user_confirm
53
53
  from jarvis.jarvis_utils.output import OutputType, PrettyOutput
54
- from jarvis.jarvis_utils.tag import ct, ot
54
+ from jarvis.jarvis_utils.tag import ot
55
55
 
56
56
 
57
- def show_agent_startup_stats(agent_name: str, model_name: str) -> None:
57
+ def show_agent_startup_stats(
58
+ agent_name: str, model_name: str, tool_registry_instance: Optional[Any] = None
59
+ ) -> None:
58
60
  """输出启动时的统计信息
59
61
 
60
62
  参数:
@@ -87,8 +89,11 @@ def show_agent_startup_stats(agent_name: str, model_name: str) -> None:
87
89
  total_tool_count = len(tool_registry_all.tools)
88
90
 
89
91
  # 获取可用工具的数量(应用过滤)
90
- tool_registry = ToolRegistry()
91
- available_tool_count = len(tool_registry.get_all_tools())
92
+ if tool_registry_instance is not None:
93
+ available_tool_count = len(tool_registry_instance.get_all_tools())
94
+ else:
95
+ tool_registry = ToolRegistry()
96
+ available_tool_count = len(tool_registry.get_all_tools())
92
97
 
93
98
  global_memory_dir = Path(get_data_dir()) / "memory" / "global_long_term"
94
99
  global_memory_count = 0
@@ -180,15 +185,20 @@ origin_agent_system_prompt = f"""
180
185
 
181
186
 
182
187
  class Agent:
183
- def clear(self):
188
+ def clear_history(self):
184
189
  """
185
190
  Clears the current conversation history by delegating to the session manager.
186
191
  """
187
- self.session.clear()
192
+ self.session.clear_history()
188
193
 
189
194
  def __del__(self):
190
195
  # 只有在记录启动时才停止记录
191
- delete_agent(self.name)
196
+ try:
197
+ name = getattr(self, "name", None)
198
+ if name:
199
+ delete_agent(name)
200
+ except Exception:
201
+ pass
192
202
 
193
203
  def get_tool_usage_prompt(self) -> str:
194
204
  """获取工具使用提示"""
@@ -203,8 +213,8 @@ class Agent:
203
213
  model_group: Optional[str] = None,
204
214
  summary_prompt: Optional[str] = None,
205
215
  auto_complete: bool = False,
206
- output_handler: List[OutputHandlerProtocol] = [],
207
- use_tools: List[str] = [],
216
+ output_handler: Optional[List[OutputHandlerProtocol]] = None,
217
+ use_tools: Optional[List[str]] = None,
208
218
  input_handler: Optional[List[Callable[[str, Any], Tuple[str, bool]]]] = None,
209
219
  execute_tool_confirm: Optional[bool] = None,
210
220
  need_summary: bool = True,
@@ -212,7 +222,7 @@ class Agent:
212
222
  use_methodology: Optional[bool] = None,
213
223
  use_analysis: Optional[bool] = None,
214
224
  force_save_memory: Optional[bool] = None,
215
- files: List[str] = [],
225
+ files: Optional[List[str]] = None,
216
226
  ):
217
227
  """初始化Jarvis Agent实例
218
228
 
@@ -225,7 +235,6 @@ class Agent:
225
235
  auto_complete: 是否自动完成任务
226
236
  output_handler: 输出处理器列表
227
237
  input_handler: 输入处理器列表
228
- max_context_length: 最大上下文长度
229
238
  execute_tool_confirm: 执行工具前是否需要确认
230
239
  need_summary: 是否需要生成总结
231
240
  multiline_inputer: 多行输入处理器
@@ -234,7 +243,7 @@ class Agent:
234
243
  force_save_memory: 是否强制保存记忆
235
244
  """
236
245
  # 基础属性初始化
237
- self.files = files
246
+ self.files = files or []
238
247
  self.name = make_agent_name(name)
239
248
  self.description = description
240
249
  self.system_prompt = system_prompt
@@ -250,7 +259,15 @@ class Agent:
250
259
  self._init_session()
251
260
 
252
261
  # 初始化处理器
253
- self._init_handlers(output_handler, input_handler, multiline_inputer, use_tools)
262
+ safe_output_handlers: List[OutputHandlerProtocol] = []
263
+ if output_handler:
264
+ safe_output_handlers = output_handler
265
+ safe_use_tools: List[str] = []
266
+ if use_tools:
267
+ safe_use_tools = use_tools
268
+ self._init_handlers(
269
+ safe_output_handlers, input_handler, multiline_inputer, safe_use_tools
270
+ )
254
271
 
255
272
  # 初始化配置
256
273
  self._init_config(
@@ -271,7 +288,7 @@ class Agent:
271
288
  self._setup_system_prompt()
272
289
 
273
290
  # 输出统计信息(包含欢迎信息)
274
- show_agent_startup_stats(name, self.model.name()) # type: ignore
291
+ show_agent_startup_stats(name, self.model.name(), self.get_tool_registry()) # type: ignore
275
292
 
276
293
  def _init_model(self, llm_type: str, model_group: Optional[str]):
277
294
  """初始化模型平台"""
@@ -284,7 +301,9 @@ class Agent:
284
301
 
285
302
  self.model = PlatformRegistry().create_platform(platform_name)
286
303
  if self.model is None:
287
- PrettyOutput.print(f"平台 {platform_name} 不存在,将使用普通模型", OutputType.WARNING)
304
+ PrettyOutput.print(
305
+ f"平台 {platform_name} 不存在,将使用普通模型", OutputType.WARNING
306
+ )
288
307
  self.model = PlatformRegistry().get_normal_platform()
289
308
 
290
309
  if model_name:
@@ -526,7 +545,7 @@ class Agent:
526
545
 
527
546
  该方法将:
528
547
  1. 提示用户保存重要记忆
529
- 2. 调用_generate_summary生成摘要
548
+ 2. 调用 generate_summary 生成摘要
530
549
  3. 清除对话历史
531
550
  4. 保留系统消息
532
551
  5. 添加摘要作为新上下文
@@ -564,6 +583,8 @@ class Agent:
564
583
  # 清理历史(但不清理prompt,因为prompt会在builtin_input_handler中设置)
565
584
  if self.model:
566
585
  self.model.reset()
586
+ # 重置后重新设置系统提示词,确保系统约束仍然生效
587
+ self._setup_system_prompt()
567
588
  # 重置会话
568
589
  self.session.clear_history()
569
590
 
@@ -715,12 +736,18 @@ class Agent:
715
736
  if isinstance(interrupt_result, tuple):
716
737
  run_input_handlers, should_continue = interrupt_result
717
738
  if should_continue:
739
+ self.run_input_handlers_next_turn = True
718
740
  continue
719
741
  else:
720
742
  return interrupt_result
721
743
 
722
744
  # 处理工具调用
723
- need_return, self.session.prompt = self._call_tools(current_response)
745
+ need_return, prompt = self._call_tools(current_response)
746
+ if self.session.prompt and prompt:
747
+ self.session.prompt += "\n\n" + prompt
748
+ else:
749
+ self.session.prompt = prompt
750
+
724
751
  if need_return:
725
752
  return self.session.prompt
726
753
 
@@ -785,7 +812,9 @@ class Agent:
785
812
  返回:
786
813
  str: "continue" 或 "complete"
787
814
  """
788
- user_input = self.multiline_inputer(f"{self.name}: 请输入,或输入空行来结束当前任务:")
815
+ user_input = self.multiline_inputer(
816
+ f"{self.name}: 请输入,或输入空行来结束当前任务:"
817
+ )
789
818
 
790
819
  if user_input:
791
820
  self.session.prompt = user_input
@@ -871,9 +900,3 @@ class Agent:
871
900
  organizer.organize_memories(memory_type, min_overlap=3)
872
901
  else:
873
902
  PrettyOutput.print(f"已取消 '{scope_name}' 记忆库整理。", OutputType.INFO)
874
-
875
- def clear_history(self):
876
- """
877
- Clears conversation history by delegating to the session manager.
878
- """
879
- self.session.clear_history()
@@ -43,7 +43,7 @@ def builtin_input_handler(user_input: str, agent_: Any) -> Tuple[str, bool]:
43
43
  prompt = memory_tags_prompt
44
44
  return prompt, True
45
45
  elif tag == "Clear":
46
- agent.clear()
46
+ agent.clear_history()
47
47
  return "", True
48
48
  elif tag == "ToolUsage":
49
49
  agent.set_addon_prompt(agent.get_tool_usage_prompt())
@@ -34,14 +34,6 @@ class SessionManager:
34
34
  """Sets the addon prompt for the next model call."""
35
35
  self.addon_prompt = addon_prompt
36
36
 
37
- def clear(self):
38
- """
39
- Clears the current conversation history, prompt, and length counter.
40
- """
41
- self.model.reset()
42
- self.conversation_length = 0
43
- self.prompt = ""
44
-
45
37
  def save_session(self) -> bool:
46
38
  """Saves the current session state to a file."""
47
39
  session_dir = os.path.join(os.getcwd(), ".jarvis")
@@ -68,13 +68,15 @@ class CodeAgent:
68
68
  "retrieve_memory",
69
69
  "clear_memory",
70
70
  ]
71
-
71
+
72
72
  if append_tools:
73
- additional_tools = [tool.strip() for tool in append_tools.split(",")]
73
+ additional_tools = [
74
+ t for t in (tool.strip() for tool in append_tools.split(",")) if t
75
+ ]
74
76
  base_tools.extend(additional_tools)
75
77
  # 去重
76
78
  base_tools = list(dict.fromkeys(base_tools))
77
-
79
+
78
80
  tool_registry.use_tools(base_tools)
79
81
  code_system_prompt = self._get_system_prompt()
80
82
  self.agent = Agent(
@@ -412,18 +414,23 @@ class CodeAgent:
412
414
  return
413
415
 
414
416
  # 获取当前分支的提交总数
415
- commit_result = subprocess.run(
416
- ["git", "rev-list", "--count", "HEAD"],
417
- capture_output=True,
418
- text=True,
419
- encoding="utf-8",
420
- errors="replace",
421
- check=True,
422
- )
423
- if commit_result.returncode != 0:
424
- return
425
-
426
- commit_count = int(commit_result.stdout.strip())
417
+ # 兼容空仓库或无 HEAD 的场景:失败时将提交计数视为 0,继续执行提交流程
418
+ commit_count = 0
419
+ try:
420
+ commit_result = subprocess.run(
421
+ ["git", "rev-list", "--count", "HEAD"],
422
+ capture_output=True,
423
+ text=True,
424
+ encoding="utf-8",
425
+ errors="replace",
426
+ check=False,
427
+ )
428
+ if commit_result.returncode == 0:
429
+ out = commit_result.stdout.strip()
430
+ if out.isdigit():
431
+ commit_count = int(out)
432
+ except Exception:
433
+ commit_count = 0
427
434
 
428
435
  # 暂存所有修改
429
436
  subprocess.run(["git", "add", "."], check=True)
@@ -634,11 +641,12 @@ class CodeAgent:
634
641
  ):
635
642
  agent.session.prompt += final_ret
636
643
  return
637
- agent.session.prompt += final_ret
644
+ # 用户未确认,允许输入自定义回复作为附加提示
638
645
  custom_reply = get_multiline_input("请输入自定义回复")
639
- if custom_reply.strip(): # 如果自定义回复为空,返回空字符串
646
+ if custom_reply.strip(): # 如果自定义回复为空,不设置附加提示
640
647
  agent.set_addon_prompt(custom_reply)
641
648
  agent.session.prompt += final_ret
649
+ return
642
650
 
643
651
 
644
652
  @app.command()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.3.12
3
+ Version: 0.3.14
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