jarvis-ai-assistant 0.3.22__py3-none-any.whl → 0.3.23__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.
jarvis/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  """Jarvis AI Assistant"""
3
3
 
4
- __version__ = "0.3.22"
4
+ __version__ = "0.3.23"
@@ -70,7 +70,6 @@ class CodeAgent:
70
70
  "retrieve_memory",
71
71
  "clear_memory",
72
72
  "sub_code_agent",
73
- "edit_file",
74
73
  ]
75
74
 
76
75
  if append_tools:
@@ -87,7 +86,7 @@ class CodeAgent:
87
86
  system_prompt=code_system_prompt,
88
87
  name="CodeAgent",
89
88
  auto_complete=False,
90
- output_handler=[tool_registry], # type: ignore
89
+ output_handler=[tool_registry, EditFileHandler()], # type: ignore
91
90
  llm_type=llm_type,
92
91
  model_group=model_group,
93
92
  input_handler=[shell_input_handler, builtin_input_handler],
@@ -640,7 +639,7 @@ class CodeAgent:
640
639
  if lint_tools_info and is_enable_static_analysis():
641
640
  addon_prompt = f"""
642
641
  请对以下修改的文件进行静态扫描:
643
- {file_list}
642
+ {file_list}
644
643
  {tool_info}
645
644
  如果本次修改引入了警告和错误,请根据警告和错误信息修复代码
646
645
  注意:如果要进行静态检查,需要在所有的修改都完成之后进行集中检查,如果文件有多个检查工具,尽量一次全部调用,不要分多次调用
@@ -165,15 +165,19 @@ class JarvisRAGPipeline:
165
165
  f"检测到索引可能不一致:变更 {len(changed)} 个,删除 {len(deleted)} 个。",
166
166
  OutputType.WARNING,
167
167
  )
168
- for p in (changed[:3] if changed else []):
168
+ for p in changed[:3] if changed else []:
169
169
  PrettyOutput.print(f" 变更: {p}", OutputType.WARNING)
170
- for p in (deleted[:3] if deleted else []):
170
+ for p in deleted[:3] if deleted else []:
171
171
  PrettyOutput.print(f" 删除: {p}", OutputType.WARNING)
172
172
  # 询问用户
173
- if get_yes_no("检测到索引变更,是否现在更新索引后再开始检索?", default=True):
173
+ if get_yes_no(
174
+ "检测到索引变更,是否现在更新索引后再开始检索?", default=True
175
+ ):
174
176
  retriever.update_index_for_changes(changed, deleted)
175
177
  else:
176
- PrettyOutput.print("已跳过索引更新,将直接使用当前索引进行检索。", OutputType.INFO)
178
+ PrettyOutput.print(
179
+ "已跳过索引更新,将直接使用当前索引进行检索。", OutputType.INFO
180
+ )
177
181
  except Exception as e:
178
182
  PrettyOutput.print(f"检索前索引检查失败:{e}", OutputType.WARNING)
179
183
 
@@ -231,7 +231,9 @@ class ChromaRetriever:
231
231
  removed += 1
232
232
  if removed > 0:
233
233
  self._save_manifest(manifest)
234
- PrettyOutput.print(f"已从索引清单中移除 {removed} 个已删除的源文件记录。", OutputType.INFO)
234
+ PrettyOutput.print(
235
+ f"已从索引清单中移除 {removed} 个已删除的源文件记录。", OutputType.INFO
236
+ )
235
237
 
236
238
  def update_index_for_changes(self, changed: List[str], deleted: List[str]) -> None:
237
239
  """
@@ -240,8 +242,12 @@ class ChromaRetriever:
240
242
  - 对 changed: 先删除旧条目,再从源文件重建并添加
241
243
  - 最后:从集合重建BM25索引,更新manifest
242
244
  """
243
- changed = list(dict.fromkeys([p for p in (changed or []) if isinstance(p, str)]))
244
- deleted = list(dict.fromkeys([p for p in (deleted or []) if isinstance(p, str)]))
245
+ changed = list(
246
+ dict.fromkeys([p for p in (changed or []) if isinstance(p, str)])
247
+ )
248
+ deleted = list(
249
+ dict.fromkeys([p for p in (deleted or []) if isinstance(p, str)])
250
+ )
245
251
 
246
252
  if not changed and not deleted:
247
253
  return
@@ -265,9 +271,13 @@ class ChromaRetriever:
265
271
  # 读取源文件内容(作为单文档载入,由 add_documents 进行拆分与嵌入)
266
272
  with open(src, "r", encoding="utf-8", errors="ignore") as f:
267
273
  content = f.read()
268
- docs_to_add.append(Document(page_content=content, metadata={"source": src}))
274
+ docs_to_add.append(
275
+ Document(page_content=content, metadata={"source": src})
276
+ )
269
277
  except Exception as e:
270
- PrettyOutput.print(f"重建源 '{src}' 内容时出错: {e}", OutputType.WARNING)
278
+ PrettyOutput.print(
279
+ f"重建源 '{src}' 内容时出错: {e}", OutputType.WARNING
280
+ )
271
281
 
272
282
  if docs_to_add:
273
283
  try:
@@ -146,9 +146,7 @@ class FileSearchReplaceTool:
146
146
  }
147
147
  )
148
148
  else:
149
- PrettyOutput.print(
150
- f"文件 {file_path} 处理失败", OutputType.ERROR
151
- )
149
+ PrettyOutput.print(f"文件 {file_path} 处理失败", OutputType.ERROR)
152
150
  file_results.append(
153
151
  {
154
152
  "file": file_path,
@@ -613,7 +613,9 @@ class ToolRegistry(OutputHandlerProtocol):
613
613
  )
614
614
 
615
615
  @staticmethod
616
- def _extract_tool_calls(content: str) -> Tuple[Dict[str, Dict[str, Any]], str, bool]:
616
+ def _extract_tool_calls(
617
+ content: str,
618
+ ) -> Tuple[Dict[str, Dict[str, Any]], str, bool]:
617
619
  """从内容中提取工具调用。
618
620
 
619
621
  参数:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.3.22
3
+ Version: 0.3.23
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
@@ -1,4 +1,4 @@
1
- jarvis/__init__.py,sha256=QFERakZ0sl8VVVJdU-RAokYHztJs5dDSjfQ0yDBE9s4,74
1
+ jarvis/__init__.py,sha256=d-XQQYWC2fZQq61hVFWvQFkyK2wabUSG4ml0M6WdOtA,74
2
2
  jarvis/jarvis_agent/__init__.py,sha256=Tahx-vDms17nh0dPIf4BbuyyAzvG6AgEXY28mH0_Nks,34592
3
3
  jarvis/jarvis_agent/agent_manager.py,sha256=YzpMiF0H2-eyk2kn2o24Bkj3bXsQx7Pv2vfD4gWepo0,2893
4
4
  jarvis/jarvis_agent/builtin_input_handler.py,sha256=wS-FqpT3pIXwHn1dfL3SpXonUKWgVThbQueUIeyRc2U,2917
@@ -21,7 +21,7 @@ jarvis/jarvis_agent/task_manager.py,sha256=7OpLHLwBmxRFN37CCoVOPCUxjyo3dtE3sJ5oj
21
21
  jarvis/jarvis_agent/tool_executor.py,sha256=k73cKhZEZpljvui4ZxALlFEIE-iLzJ32Softsmiwzqk,1896
22
22
  jarvis/jarvis_agent/tool_share_manager.py,sha256=Do08FRxis0ynwR2a6iRoa6Yq0qCP8NkuhMbPrimaxMA,5169
23
23
  jarvis/jarvis_code_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
- jarvis/jarvis_code_agent/code_agent.py,sha256=d1LUPTcVBNQVkucFf0hop8EKDrEIWij4mgvi-ri4KFE,31577
24
+ jarvis/jarvis_code_agent/code_agent.py,sha256=kPKx7GlQGL_YadYvv9Vk_rt_D6tUTTKLWpNhr-gvd_g,31575
25
25
  jarvis/jarvis_code_agent/lint.py,sha256=LZPsfyZPMo7Wm7LN4osZocuNJwZx1ojacO3MlF870x8,4009
26
26
  jarvis/jarvis_code_analysis/code_review.py,sha256=8Ai5UdptEYem7Hj-VXIk4zXS6ySuFXRzl0GIc6ZKeLc,35798
27
27
  jarvis/jarvis_code_analysis/checklists/__init__.py,sha256=LIXAYa1sW3l7foP6kohLWnE98I_EQ0T7z5bYKHq6rJA,78
@@ -76,9 +76,9 @@ jarvis/jarvis_rag/cli.py,sha256=9TOFchODRnMWcXxFZKgnSE_yNLUfZQ_V3yjQQxEnUZI,1705
76
76
  jarvis/jarvis_rag/embedding_manager.py,sha256=Rd8q9V8oiXOgeccPskwsFoxMk8u2wZD3eb_1ieYu8y4,3704
77
77
  jarvis/jarvis_rag/llm_interface.py,sha256=INosZrt4d5Dvc3ePI3up2QOeyraC_p8L3w9j8BjdIj8,4580
78
78
  jarvis/jarvis_rag/query_rewriter.py,sha256=LGAWZ8kwH_dpquuYqc4QWC7IXmHX3SsnPSYMWOn-nDE,4072
79
- jarvis/jarvis_rag/rag_pipeline.py,sha256=TgPpsUrzZlD07QQuszcrDFnmkFC6YVXOrShVcWzEq78,12775
79
+ jarvis/jarvis_rag/rag_pipeline.py,sha256=VkVTtYLL6dW12FSrZGJcWglcWqZMpZWELWO6aW-i9RU,12839
80
80
  jarvis/jarvis_rag/reranker.py,sha256=Uzn4n1bNj4kWyQu9-z-jK_5dAU6drn5jEugML-kFHg8,1885
81
- jarvis/jarvis_rag/retriever.py,sha256=gFgeSslc-N7TDdD4U7yyYPtqrbbjAHZlFNTctyIeusc,18178
81
+ jarvis/jarvis_rag/retriever.py,sha256=kBHd3O6rXxc09AuuZlAQgKrxvx0RrB_IX6_3Ryf_aVw,18328
82
82
  jarvis/jarvis_smart_shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
83
  jarvis/jarvis_smart_shell/main.py,sha256=J5O58K5KvUvB_ghbT5XwIi5QGXD3DiBlGDs0wYYvy-w,15197
84
84
  jarvis/jarvis_stats/__init__.py,sha256=jJzgP43nxzLbNGs8Do4Jfta1PNCJMf1Oq9YTPd6EnFM,342
@@ -90,14 +90,14 @@ jarvis/jarvis_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
90
90
  jarvis/jarvis_tools/ask_user.py,sha256=M6DdLNryCE8y1JcdZHEifUgZkPUEPNKc-zDW5p0Mb1k,2029
91
91
  jarvis/jarvis_tools/base.py,sha256=tFZkRlbV_a-pbjM-ci9AYmXVJm__FXuzVWKbQEyz4Ao,1639
92
92
  jarvis/jarvis_tools/clear_memory.py,sha256=_GlwqlCAsoHeB24Y1CnjLdMawRTc6cq55AA8Yi5AZg4,8249
93
- jarvis/jarvis_tools/edit_file.py,sha256=aroyhvPGSwDRYZwm-FsvVxHFE2WAPyviqlMOC1fYETo,7132
93
+ jarvis/jarvis_tools/edit_file.py,sha256=BUz0kfv44kqfNDr3tZKS-7Cn5DDhYl8xhHO7X8x7HQI,7086
94
94
  jarvis/jarvis_tools/execute_script.py,sha256=kASNTShHVGlHm7pZZxUeyEZHzHAYiZ-87AzrYVyORMw,6231
95
95
  jarvis/jarvis_tools/file_analyzer.py,sha256=uwmcPvRjuAzMznCy5ZqilkQY9dyL6suydMP_zL1ulk8,3914
96
96
  jarvis/jarvis_tools/generate_new_tool.py,sha256=OCHkBOCQflgMZXRP4vgX3blnJOUq-_QkcBFRQFj3sj0,7894
97
97
  jarvis/jarvis_tools/methodology.py,sha256=_K4GIDUodGEma3SvNRo7Qs5rliijgNespVLyAPN35JU,5233
98
98
  jarvis/jarvis_tools/read_code.py,sha256=qeQZ_emyPI5RTFx4HSgLBtWSwh8V5chqMjxu2uKzmfY,6100
99
99
  jarvis/jarvis_tools/read_webpage.py,sha256=YTmoalY8y-jdQuoj9IL6ZjXPOevUj2P_9arJngPhbUY,5317
100
- jarvis/jarvis_tools/registry.py,sha256=oIcHbRLKl62LWmJARMH3KB4aoKNjLGzrIaJarx7GQZU,31859
100
+ jarvis/jarvis_tools/registry.py,sha256=G3xgZ5ECTzAhA0hJlWrB84Shyhn18U9ijlwCn5XsUow,31874
101
101
  jarvis/jarvis_tools/retrieve_memory.py,sha256=hQ3s4IgBHtmUPzuWFl5Pc2FLEuT2gdi4l4NlUoO9pQM,8640
102
102
  jarvis/jarvis_tools/rewrite_file.py,sha256=CuvjWPTbUaPbex9FKSmw_Ru4r6R-CX_3vqTqCTp8nHA,6959
103
103
  jarvis/jarvis_tools/save_memory.py,sha256=QKj6iYZL2XxPX0NnU9HqvoDOpJZ38mJmatDmHLK2r74,7012
@@ -121,9 +121,9 @@ jarvis/jarvis_utils/methodology.py,sha256=fMo8bwd-Iam1yQL8LkPy1gwG4L2uLOTzZHbc07
121
121
  jarvis/jarvis_utils/output.py,sha256=svCHLuXHe3Ta_qfoT5DxO80nyYyMfBFIKgziQS__Nmg,13632
122
122
  jarvis/jarvis_utils/tag.py,sha256=f211opbbbTcSyzCDwuIK_oCnKhXPNK-RknYyGzY1yD0,431
123
123
  jarvis/jarvis_utils/utils.py,sha256=TuuwdsTkIyEWsbIILyKCGsEmEgDOfkg235sZscScNJk,61562
124
- jarvis_ai_assistant-0.3.22.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
125
- jarvis_ai_assistant-0.3.22.dist-info/METADATA,sha256=Vlh0jMccrAINzllO6_aqR0VxPB2EicVEOJEmym7l5Vo,18513
126
- jarvis_ai_assistant-0.3.22.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
127
- jarvis_ai_assistant-0.3.22.dist-info/entry_points.txt,sha256=4GcWKFxRJD-QU14gw_3ZaW4KuEVxOcZK9i270rwPdjA,1395
128
- jarvis_ai_assistant-0.3.22.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
129
- jarvis_ai_assistant-0.3.22.dist-info/RECORD,,
124
+ jarvis_ai_assistant-0.3.23.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
125
+ jarvis_ai_assistant-0.3.23.dist-info/METADATA,sha256=Y_xzK5pwQB03TgzEUp7mNJJFQR-Ygo0trvHZsmBbryw,18513
126
+ jarvis_ai_assistant-0.3.23.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
127
+ jarvis_ai_assistant-0.3.23.dist-info/entry_points.txt,sha256=4GcWKFxRJD-QU14gw_3ZaW4KuEVxOcZK9i270rwPdjA,1395
128
+ jarvis_ai_assistant-0.3.23.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
129
+ jarvis_ai_assistant-0.3.23.dist-info/RECORD,,