jarvis-ai-assistant 0.1.161__tar.gz → 0.1.162__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.
Potentially problematic release.
This version of jarvis-ai-assistant might be problematic. Click here for more details.
- {jarvis_ai_assistant-0.1.161/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.1.162}/PKG-INFO +1 -1
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/pyproject.toml +1 -1
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/setup.py +1 -1
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/__init__.py +1 -1
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_agent/__init__.py +1 -2
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_agent/jarvis.py +1 -2
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_agent/code_agent.py +9 -5
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_dev/main.py +11 -4
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_git_utils/git_commiter.py +2 -3
- jarvis_ai_assistant-0.1.161/src/jarvis/jarvis_agent/patch.py → jarvis_ai_assistant-0.1.162/src/jarvis/jarvis_tools/edit_file.py +107 -155
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162/src/jarvis_ai_assistant.egg-info}/PKG-INFO +1 -1
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +1 -1
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/LICENSE +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/MANIFEST.in +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/README.md +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/setup.cfg +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_agent/builtin_input_handler.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_agent/file_input_handler.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_agent/main.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_agent/output_handler.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_agent/shell_input_handler.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_analysis/checklists/devops.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_analysis/checklists/docs.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_analysis/checklists/go.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_analysis/checklists/java.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_analysis/checklists/loader.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_analysis/checklists/php.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_analysis/checklists/python.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_analysis/checklists/rust.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_analysis/checklists/shell.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_analysis/checklists/sql.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_analysis/checklists/swift.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_analysis/checklists/web.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_analysis/code_review.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_git_details/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_git_details/main.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_git_squash/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_git_squash/main.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_lsp/base.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_lsp/cpp.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_lsp/go.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_lsp/python.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_lsp/registry.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_lsp/rust.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_mcp/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_mcp/sse_mcp_client.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_mcp/stdio_mcp_client.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_methodology/main.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_multi_agent/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_multi_agent/main.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_platform/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_platform/base.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_platform/human.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_platform/kimi.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_platform/registry.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_platform/yuanbao.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_platform_manager/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_platform_manager/main.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_smart_shell/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_smart_shell/main.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/ask_codebase.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/ask_user.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/base.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/chdir.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/code_plan.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/create_code_agent.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/create_sub_agent.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/execute_script.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/file_analyzer.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/file_operation.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/find_methodology.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/lsp_get_diagnostics.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/methodology.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/read_code.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/read_webpage.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/registry.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/search_web.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/virtual_tty.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_utils/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_utils/builtin_replace_map.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_utils/config.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_utils/embedding.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_utils/file_processors.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_utils/git_utils.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_utils/globals.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_utils/input.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_utils/methodology.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_utils/output.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_utils/tag.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_utils/utils.py +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis_ai_assistant.egg-info/entry_points.txt +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis_ai_assistant.egg-info/requires.txt +0 -0
- {jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis_ai_assistant.egg-info/top_level.txt +0 -0
|
@@ -8,7 +8,7 @@ default = true
|
|
|
8
8
|
|
|
9
9
|
[project]
|
|
10
10
|
name = "jarvis-ai-assistant"
|
|
11
|
-
version = "0.1.
|
|
11
|
+
version = "0.1.162"
|
|
12
12
|
description = "Jarvis: An AI assistant that uses tools to interact with the system"
|
|
13
13
|
readme = "README.md"
|
|
14
14
|
authors = [{ name = "skyfire", email = "skyfireitdiy@hotmail.com" }]
|
|
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
|
|
2
2
|
|
|
3
3
|
setup(
|
|
4
4
|
name="jarvis-ai-assistant",
|
|
5
|
-
version="0.1.
|
|
5
|
+
version="0.1.162",
|
|
6
6
|
author="skyfire",
|
|
7
7
|
author_email="skyfireitdiy@hotmail.com",
|
|
8
8
|
description="An AI assistant that uses various tools to interact with the system",
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_agent/__init__.py
RENAMED
|
@@ -5,7 +5,6 @@ from typing import Any, Callable, List, Optional, Tuple, Union
|
|
|
5
5
|
from yaspin import yaspin # type: ignore
|
|
6
6
|
|
|
7
7
|
from jarvis.jarvis_agent.output_handler import OutputHandler
|
|
8
|
-
from jarvis.jarvis_agent.patch import PatchOutputHandler
|
|
9
8
|
from jarvis.jarvis_platform.base import BasePlatform
|
|
10
9
|
from jarvis.jarvis_platform.registry import PlatformRegistry
|
|
11
10
|
from jarvis.jarvis_utils.output import PrettyOutput, OutputType
|
|
@@ -180,7 +179,7 @@ class Agent:
|
|
|
180
179
|
self.model.set_suppress_output(False)
|
|
181
180
|
|
|
182
181
|
from jarvis.jarvis_tools.registry import ToolRegistry
|
|
183
|
-
self.output_handler = output_handler if output_handler else [ToolRegistry()
|
|
182
|
+
self.output_handler = output_handler if output_handler else [ToolRegistry()]
|
|
184
183
|
self.multiline_inputer = multiline_inputer if multiline_inputer else get_multiline_input
|
|
185
184
|
|
|
186
185
|
self.prompt = ""
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_agent/jarvis.py
RENAMED
|
@@ -15,7 +15,6 @@ from jarvis.jarvis_agent import (
|
|
|
15
15
|
Agent,
|
|
16
16
|
origin_agent_system_prompt
|
|
17
17
|
)
|
|
18
|
-
from jarvis.jarvis_agent.patch import PatchOutputHandler
|
|
19
18
|
from jarvis.jarvis_tools.registry import ToolRegistry
|
|
20
19
|
from jarvis.jarvis_utils.utils import init_env
|
|
21
20
|
from jarvis.jarvis_agent.file_input_handler import file_input_handler
|
|
@@ -123,7 +122,7 @@ def main() -> None:
|
|
|
123
122
|
platform=args.platform,
|
|
124
123
|
model_name=args.model,
|
|
125
124
|
input_handler=[file_input_handler, shell_input_handler, builtin_input_handler],
|
|
126
|
-
output_handler=[ToolRegistry()
|
|
125
|
+
output_handler=[ToolRegistry()],
|
|
127
126
|
need_summary=False
|
|
128
127
|
)
|
|
129
128
|
|
|
@@ -16,7 +16,6 @@ from jarvis.jarvis_agent import Agent
|
|
|
16
16
|
from jarvis.jarvis_agent.builtin_input_handler import builtin_input_handler
|
|
17
17
|
from jarvis.jarvis_agent.file_input_handler import file_input_handler
|
|
18
18
|
from jarvis.jarvis_agent.shell_input_handler import shell_input_handler
|
|
19
|
-
from jarvis.jarvis_agent.patch import PatchOutputHandler
|
|
20
19
|
from jarvis.jarvis_platform.registry import PlatformRegistry
|
|
21
20
|
from jarvis.jarvis_git_utils.git_commiter import GitCommitTool
|
|
22
21
|
from jarvis.jarvis_tools.registry import ToolRegistry
|
|
@@ -51,9 +50,8 @@ class CodeAgent:
|
|
|
51
50
|
"read_code",
|
|
52
51
|
"methodology",
|
|
53
52
|
"chdir",
|
|
54
|
-
"create_code_agent",
|
|
55
53
|
"find_methodology",
|
|
56
|
-
"
|
|
54
|
+
"edit_file",
|
|
57
55
|
])
|
|
58
56
|
code_system_prompt = """
|
|
59
57
|
<code_engineer_guide>
|
|
@@ -204,7 +202,13 @@ class CodeAgent:
|
|
|
204
202
|
- loc比wc -l提供更多代码统计信息,应优先使用
|
|
205
203
|
- 针对不同编程语言选择对应的代码质量检查工具
|
|
206
204
|
- 不要留下未实现的代码
|
|
207
|
-
|
|
205
|
+
|
|
206
|
+
### 代码编辑规范
|
|
207
|
+
- 使用edit_file工具进行代码修改时,必须遵循最小补丁原则
|
|
208
|
+
- 只提供需要修改的代码部分,不要提供完整文件内容
|
|
209
|
+
- 保持原始代码的缩进、空行和格式风格
|
|
210
|
+
- 每个修改必须包含清晰的修改理由
|
|
211
|
+
- 新建文件时可以提供完整内容,修改现有文件时只提供差异部分
|
|
208
212
|
</notes>
|
|
209
213
|
</code_engineer_guide>
|
|
210
214
|
"""
|
|
@@ -220,7 +224,7 @@ class CodeAgent:
|
|
|
220
224
|
system_prompt=code_system_prompt,
|
|
221
225
|
name="CodeAgent",
|
|
222
226
|
auto_complete=False,
|
|
223
|
-
output_handler=[tool_registry
|
|
227
|
+
output_handler=[tool_registry],
|
|
224
228
|
platform=platform_instance,
|
|
225
229
|
input_handler=[
|
|
226
230
|
shell_input_handler,
|
|
@@ -3,7 +3,8 @@ from jarvis.jarvis_multi_agent import MultiAgent
|
|
|
3
3
|
from jarvis.jarvis_tools.registry import ToolRegistry
|
|
4
4
|
from jarvis.jarvis_utils.input import get_multiline_input
|
|
5
5
|
from jarvis.jarvis_utils.output import OutputType, PrettyOutput
|
|
6
|
-
from jarvis.jarvis_utils.
|
|
6
|
+
from jarvis.jarvis_utils.tag import ct, ot
|
|
7
|
+
from jarvis.jarvis_utils.utils import init_env
|
|
7
8
|
|
|
8
9
|
# 定义每个角色的系统提示
|
|
9
10
|
PM_PROMPT = f"""
|
|
@@ -994,7 +995,8 @@ def create_dev_team() -> MultiAgent:
|
|
|
994
995
|
"search_web",
|
|
995
996
|
"execute_script",
|
|
996
997
|
"methodology",
|
|
997
|
-
"ask_codebase"
|
|
998
|
+
"ask_codebase",
|
|
999
|
+
"edit_file",
|
|
998
1000
|
])
|
|
999
1001
|
|
|
1000
1002
|
BA_output_handler = ToolRegistry()
|
|
@@ -1005,7 +1007,8 @@ def create_dev_team() -> MultiAgent:
|
|
|
1005
1007
|
"execute_script",
|
|
1006
1008
|
"read_webpage",
|
|
1007
1009
|
"methodology",
|
|
1008
|
-
"ask_codebase"
|
|
1010
|
+
"ask_codebase",
|
|
1011
|
+
"edit_file",
|
|
1009
1012
|
])
|
|
1010
1013
|
|
|
1011
1014
|
SA_output_handler = ToolRegistry()
|
|
@@ -1015,7 +1018,8 @@ def create_dev_team() -> MultiAgent:
|
|
|
1015
1018
|
"ask_codebase",
|
|
1016
1019
|
"execute_script",
|
|
1017
1020
|
"read_code",
|
|
1018
|
-
"methodology"
|
|
1021
|
+
"methodology",
|
|
1022
|
+
"edit_file",
|
|
1019
1023
|
])
|
|
1020
1024
|
|
|
1021
1025
|
TL_output_handler = ToolRegistry()
|
|
@@ -1025,6 +1029,7 @@ def create_dev_team() -> MultiAgent:
|
|
|
1025
1029
|
"lsp_get_diagnostics",
|
|
1026
1030
|
"execute_script",
|
|
1027
1031
|
"methodology",
|
|
1032
|
+
"edit_file",
|
|
1028
1033
|
])
|
|
1029
1034
|
|
|
1030
1035
|
DEV_output_handler = ToolRegistry()
|
|
@@ -1036,6 +1041,7 @@ def create_dev_team() -> MultiAgent:
|
|
|
1036
1041
|
"read_code",
|
|
1037
1042
|
"create_sub_agent",
|
|
1038
1043
|
"methodology",
|
|
1044
|
+
"edit_file",
|
|
1039
1045
|
])
|
|
1040
1046
|
|
|
1041
1047
|
QA_output_handler = ToolRegistry()
|
|
@@ -1048,6 +1054,7 @@ def create_dev_team() -> MultiAgent:
|
|
|
1048
1054
|
"execute_script",
|
|
1049
1055
|
"read_code",
|
|
1050
1056
|
"methodology",
|
|
1057
|
+
"edit_file",
|
|
1051
1058
|
])
|
|
1052
1059
|
|
|
1053
1060
|
# Update PM prompt with tool usage guidance
|
|
@@ -153,9 +153,10 @@ class GitCommitTool:
|
|
|
153
153
|
except Exception as e:
|
|
154
154
|
spinner.write(f"⚠️ 上传文件时出错: {str(e)}")
|
|
155
155
|
upload_success = False
|
|
156
|
-
|
|
157
156
|
# 根据上传状态准备完整的提示
|
|
158
157
|
if upload_success:
|
|
158
|
+
# 尝试生成提交信息
|
|
159
|
+
spinner.text = "正在生成提交消息..."
|
|
159
160
|
# 使用上传的文件
|
|
160
161
|
prompt = base_prompt + f'''
|
|
161
162
|
# 变更概述
|
|
@@ -178,8 +179,6 @@ class GitCommitTool:
|
|
|
178
179
|
'''
|
|
179
180
|
commit_message = platform.chat_until_success(prompt)
|
|
180
181
|
|
|
181
|
-
# 尝试生成提交信息
|
|
182
|
-
spinner.text = "正在生成提交消息..."
|
|
183
182
|
while True:
|
|
184
183
|
# 只在特定情况下重新获取commit_message
|
|
185
184
|
if not upload_success and not is_large_content and not commit_message:
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
from pydoc import describe
|
|
1
2
|
import re
|
|
2
3
|
from typing import Dict, Any, Tuple
|
|
3
4
|
import os
|
|
4
5
|
|
|
6
|
+
from networkx import descendants
|
|
7
|
+
|
|
5
8
|
from yaspin import yaspin # type: ignore
|
|
6
9
|
|
|
7
10
|
from jarvis.jarvis_agent.output_handler import OutputHandler
|
|
@@ -18,35 +21,15 @@ from jarvis.jarvis_utils.utils import is_context_overflow, get_file_line_count,
|
|
|
18
21
|
from jarvis.jarvis_utils.tag import ot, ct
|
|
19
22
|
|
|
20
23
|
|
|
21
|
-
class PatchOutputHandler
|
|
22
|
-
def name(self) -> str:
|
|
23
|
-
return "PATCH"
|
|
24
|
-
|
|
25
|
-
def handle(self, response: str, agent: Any) -> Tuple[bool, Any]:
|
|
26
|
-
return False, apply_patch(response, agent)
|
|
27
|
-
|
|
28
|
-
def can_handle(self, response: str) -> bool:
|
|
29
|
-
if _has_patch_block(response):
|
|
30
|
-
return True
|
|
31
|
-
return False
|
|
24
|
+
class PatchOutputHandler:
|
|
32
25
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
#
|
|
26
|
+
name = "edit_file"
|
|
27
|
+
description = """代码编辑工具,用于编辑文件
|
|
28
|
+
# 代码编辑规范
|
|
36
29
|
|
|
37
30
|
## 重要提示
|
|
38
31
|
我可以看到完整的代码,所以不需要生成完整的代码,只需要提供修改的代码片段即可。请尽量精简补丁内容,只包含必要的上下文和修改部分。特别注意:不要提供完整文件内容,只提供需要修改的部分!
|
|
39
32
|
|
|
40
|
-
## 补丁格式定义
|
|
41
|
-
使用{ot("PATCH")}块来精确指定代码更改:
|
|
42
|
-
```
|
|
43
|
-
{ot("PATCH")}
|
|
44
|
-
File: [文件路径]
|
|
45
|
-
Reason: [修改原因]
|
|
46
|
-
[代码修改说明,不用输出完整的代码,仅输出修改的片段即可]
|
|
47
|
-
{ct("PATCH")}
|
|
48
|
-
```
|
|
49
|
-
|
|
50
33
|
## 核心原则
|
|
51
34
|
1. **精准修改**:只显示需要修改的代码部分,不需要展示整个文件内容
|
|
52
35
|
2. **最小补丁原则**:始终生成最小范围的补丁,只包含必要的上下文和实际修改
|
|
@@ -71,22 +54,6 @@ Reason: [修改原因]
|
|
|
71
54
|
- 如果原代码行尾没有空格,补丁也不应添加行尾空格
|
|
72
55
|
- 如果原代码使用特定的行尾注释风格,补丁也应保持该风格
|
|
73
56
|
|
|
74
|
-
## 补丁示例
|
|
75
|
-
```
|
|
76
|
-
{ot("PATCH")}
|
|
77
|
-
File: src/utils/math.py
|
|
78
|
-
Reason: 修复除零错误,增加参数验证以提高函数健壮性
|
|
79
|
-
def safe_divide(a, b):
|
|
80
|
-
# 添加参数验证
|
|
81
|
-
if b == 0:
|
|
82
|
-
raise ValueError("除数不能为零")
|
|
83
|
-
return a / b
|
|
84
|
-
# 现有代码 ...
|
|
85
|
-
def add(a, b):
|
|
86
|
-
return a + b
|
|
87
|
-
{ct("PATCH")}
|
|
88
|
-
```
|
|
89
|
-
|
|
90
57
|
## 最佳实践
|
|
91
58
|
- 每个补丁专注于单一职责的修改
|
|
92
59
|
- 避免包含过多无关代码
|
|
@@ -96,77 +63,47 @@ def add(a, b):
|
|
|
96
63
|
- 绝不提供完整文件内容,除非是新建文件
|
|
97
64
|
- 每个文件的修改是独立的,不能出现“参照xxx文件的修改”这样的描述
|
|
98
65
|
- 不要出现未实现的代码,如:TODO
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
result = {}
|
|
110
|
-
patches = re.findall(ot("PATCH")+r'\n?(.*?)\n?' +
|
|
111
|
-
ct("PATCH"), patch_str, re.DOTALL)
|
|
112
|
-
if patches:
|
|
113
|
-
for patch in patches:
|
|
114
|
-
first_line = patch.splitlines()[0]
|
|
115
|
-
sm = re.match(r'^File:\s*(.+)$', first_line)
|
|
116
|
-
if not sm:
|
|
117
|
-
return ({}, f"""无效的补丁格式,正确格式应该为:
|
|
118
|
-
{ot("PATCH")}
|
|
119
|
-
File: [文件路径]
|
|
120
|
-
Reason: [修改原因]
|
|
121
|
-
[代码修改说明,不用输出完整的代码,仅输出修改的片段即可]
|
|
122
|
-
{ct("PATCH")}""")
|
|
123
|
-
filepath = os.path.abspath(sm.group(1).strip())
|
|
124
|
-
if filepath not in result:
|
|
125
|
-
result[filepath] = patch
|
|
126
|
-
else:
|
|
127
|
-
result[filepath] += "\n\n" + patch
|
|
128
|
-
return result, ""
|
|
66
|
+
- 如果要修改的内容较多,请分多次修改
|
|
67
|
+
"""
|
|
68
|
+
parameters = {
|
|
69
|
+
"type": "object",
|
|
70
|
+
"properties": {
|
|
71
|
+
"file": {"type": "string", "description": "文件路径"},
|
|
72
|
+
"reason": {"type": "string", "description": "修改原因"},
|
|
73
|
+
"content": {"type": "string", "description": "补丁内容"}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
129
76
|
|
|
130
77
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
78
|
+
|
|
79
|
+
def execute(self, args: Dict) -> Dict[str, Any]:
|
|
80
|
+
"""Apply patches to files"""
|
|
81
|
+
|
|
82
|
+
from jarvis.jarvis_agent import Agent
|
|
83
|
+
filepath = args["file"]
|
|
84
|
+
patch_content = args["content"]
|
|
85
|
+
agent: Agent = args["agent"]
|
|
86
|
+
|
|
87
|
+
with yaspin(text="正在应用补丁...", color="cyan") as spinner:
|
|
88
|
+
|
|
89
|
+
# 获取当前提交hash作为起始点
|
|
90
|
+
spinner.text = "开始获取当前提交hash..."
|
|
91
|
+
start_hash = get_latest_commit_hash()
|
|
92
|
+
spinner.write("✅ 当前提交hash获取完成")
|
|
93
|
+
|
|
94
|
+
not_read_file = not has_read_file(filepath) and os.path.exists(filepath) and os.path.getsize(filepath) > 0
|
|
95
|
+
if not_read_file:
|
|
96
|
+
spinner.text=f"以下文件未读取: {filepath},应用补丁存在风险,将先读取文件后再生成补丁"
|
|
138
97
|
spinner.fail("❌")
|
|
139
|
-
return
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
# 获取当前提交hash作为起始点
|
|
146
|
-
spinner.text = "开始获取当前提交hash..."
|
|
147
|
-
start_hash = get_latest_commit_hash()
|
|
148
|
-
spinner.write("✅ 当前提交hash获取完成")
|
|
149
|
-
|
|
150
|
-
not_read_file = [
|
|
151
|
-
f for f in patches.keys()
|
|
152
|
-
if not has_read_file(f)
|
|
153
|
-
and os.path.exists(f)
|
|
154
|
-
and os.path.getsize(f) > 0
|
|
155
|
-
]
|
|
156
|
-
if not_read_file:
|
|
157
|
-
spinner.text=f"以下文件未读取: {not_read_file},应用补丁存在风险,将先读取文件后再生成补丁"
|
|
158
|
-
spinner.fail("❌")
|
|
159
|
-
return f"以下文件未读取: {not_read_file},应用补丁存在风险,请先读取文件后再生成补丁"
|
|
98
|
+
return {
|
|
99
|
+
"success": False,
|
|
100
|
+
"stdout": f"以下文件未读取: {filepath},应用补丁存在风险,请先读取文件后再生成补丁",
|
|
101
|
+
"stderr": ""
|
|
102
|
+
}
|
|
160
103
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
for filepath in patches.keys():
|
|
164
|
-
if not _is_file_in_git_repo(filepath):
|
|
165
|
-
in_git_repo = False
|
|
166
|
-
break
|
|
104
|
+
# 检查是否有文件在Git仓库外
|
|
105
|
+
in_git_repo = _is_file_in_git_repo(filepath)
|
|
167
106
|
|
|
168
|
-
# 按文件逐个处理
|
|
169
|
-
for filepath, patch_content in patches.items():
|
|
170
107
|
try:
|
|
171
108
|
spinner.text = f"正在处理文件: {filepath}"
|
|
172
109
|
if not os.path.exists(filepath):
|
|
@@ -188,59 +125,74 @@ def apply_patch(output_str: str, agent: Any) -> str:
|
|
|
188
125
|
revert_file(filepath) # 回滚单个文件
|
|
189
126
|
spinner.write(f"✅ 文件 {filepath} 回滚完成")
|
|
190
127
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
128
|
+
final_ret = ""
|
|
129
|
+
if in_git_repo:
|
|
130
|
+
diff = get_diff()
|
|
131
|
+
if diff:
|
|
132
|
+
PrettyOutput.print(diff, OutputType.CODE, lang="diff")
|
|
133
|
+
with spinner.hidden():
|
|
134
|
+
commited = handle_commit_workflow()
|
|
135
|
+
if commited:
|
|
136
|
+
# 获取提交信息
|
|
137
|
+
end_hash = get_latest_commit_hash()
|
|
138
|
+
commits = get_commits_between(start_hash, end_hash)
|
|
202
139
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
140
|
+
# 添加提交信息到final_ret
|
|
141
|
+
if commits:
|
|
142
|
+
final_ret += "✅ 补丁已应用\n"
|
|
143
|
+
final_ret += "# 提交信息:\n"
|
|
144
|
+
for commit_hash, commit_message in commits:
|
|
145
|
+
final_ret += f"- {commit_hash[:7]}: {commit_message}\n"
|
|
209
146
|
|
|
210
|
-
|
|
147
|
+
final_ret += f"# 应用补丁:\n```diff\n{diff}\n```"
|
|
211
148
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
149
|
+
# 修改后的提示逻辑
|
|
150
|
+
addon_prompt = f"如果用户的需求未完成,请继续生成补丁,如果已经完成,请终止,不要输出新的PATCH,不要实现任何超出用户需求外的内容\n"
|
|
151
|
+
addon_prompt += "如果有任何信息不明确,调用工具获取信息\n"
|
|
152
|
+
addon_prompt += "每次响应必须且只能包含一个操作\n"
|
|
216
153
|
|
|
217
|
-
|
|
154
|
+
agent.set_addon_prompt(addon_prompt)
|
|
218
155
|
|
|
156
|
+
else:
|
|
157
|
+
final_ret += "✅ 补丁已应用(没有新的提交)"
|
|
219
158
|
else:
|
|
220
|
-
final_ret += "
|
|
159
|
+
final_ret += "❌ 补丁应用被拒绝\n"
|
|
160
|
+
final_ret += f"# 补丁预览:\n```diff\n{diff}\n```"
|
|
221
161
|
else:
|
|
222
|
-
|
|
223
|
-
final_ret +=
|
|
162
|
+
commited = False
|
|
163
|
+
final_ret += "❌ 没有要提交的更改\n"
|
|
224
164
|
else:
|
|
225
|
-
|
|
226
|
-
final_ret += "
|
|
227
|
-
|
|
228
|
-
#
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
165
|
+
# 对于Git仓库外的文件,直接返回成功
|
|
166
|
+
final_ret += "✅ 补丁已应用(文件不在Git仓库中)"
|
|
167
|
+
commited = True
|
|
168
|
+
# 用户确认最终结果
|
|
169
|
+
with spinner.hidden():
|
|
170
|
+
if commited:
|
|
171
|
+
return {
|
|
172
|
+
"success": True,
|
|
173
|
+
"stdout": final_ret,
|
|
174
|
+
"stderr": ""
|
|
175
|
+
}
|
|
176
|
+
PrettyOutput.print(final_ret, OutputType.USER, lang="markdown")
|
|
177
|
+
if not is_confirm_before_apply_patch() or user_confirm("是否使用此回复?", default=True):
|
|
178
|
+
return {
|
|
179
|
+
"success": True,
|
|
180
|
+
"stdout": final_ret,
|
|
181
|
+
"stderr": ""
|
|
182
|
+
}
|
|
183
|
+
custom_reply = get_multiline_input("请输入自定义回复")
|
|
184
|
+
if not custom_reply.strip(): # 如果自定义回复为空,返回空字符串
|
|
185
|
+
return {
|
|
186
|
+
"success": True,
|
|
187
|
+
"stdout": final_ret,
|
|
188
|
+
"stderr": ""
|
|
189
|
+
}
|
|
190
|
+
agent.set_addon_prompt(custom_reply)
|
|
191
|
+
return {
|
|
192
|
+
"success": True,
|
|
193
|
+
"stdout": final_ret,
|
|
194
|
+
"stderr": ""
|
|
195
|
+
}
|
|
244
196
|
|
|
245
197
|
def _is_file_in_git_repo(filepath: str) -> bool:
|
|
246
198
|
"""检查文件是否在当前Git仓库中"""
|
|
@@ -532,19 +484,19 @@ def handle_large_code_operation(filepath: str, patch_content: str, model: BasePl
|
|
|
532
484
|
|
|
533
485
|
## 输出模板
|
|
534
486
|
{ot("DIFF")}
|
|
535
|
-
|
|
487
|
+
{">" * 5} SEARCH
|
|
536
488
|
[需要查找的原始代码,包含足够上下文,避免出现可匹配多处的情况]
|
|
537
489
|
{'='*5}
|
|
538
490
|
[替换后的新代码]
|
|
539
|
-
|
|
491
|
+
{"<" * 5} REPLACE
|
|
540
492
|
{ct("DIFF")}
|
|
541
493
|
|
|
542
494
|
{ot("DIFF")}
|
|
543
|
-
|
|
495
|
+
{">" * 5} SEARCH
|
|
544
496
|
[另一处需要查找的原始代码,包含足够上下文,避免出现可匹配多处的情况]
|
|
545
497
|
{'='*5}
|
|
546
498
|
[另一处替换后的新代码]
|
|
547
|
-
|
|
499
|
+
{"<" * 5} REPLACE
|
|
548
500
|
{ct("DIFF")}
|
|
549
501
|
"""
|
|
550
502
|
|
|
@@ -10,7 +10,6 @@ src/jarvis/jarvis_agent/file_input_handler.py
|
|
|
10
10
|
src/jarvis/jarvis_agent/jarvis.py
|
|
11
11
|
src/jarvis/jarvis_agent/main.py
|
|
12
12
|
src/jarvis/jarvis_agent/output_handler.py
|
|
13
|
-
src/jarvis/jarvis_agent/patch.py
|
|
14
13
|
src/jarvis/jarvis_agent/shell_input_handler.py
|
|
15
14
|
src/jarvis/jarvis_code_agent/__init__.py
|
|
16
15
|
src/jarvis/jarvis_code_agent/code_agent.py
|
|
@@ -71,6 +70,7 @@ src/jarvis/jarvis_tools/chdir.py
|
|
|
71
70
|
src/jarvis/jarvis_tools/code_plan.py
|
|
72
71
|
src/jarvis/jarvis_tools/create_code_agent.py
|
|
73
72
|
src/jarvis/jarvis_tools/create_sub_agent.py
|
|
73
|
+
src/jarvis/jarvis_tools/edit_file.py
|
|
74
74
|
src/jarvis/jarvis_tools/execute_script.py
|
|
75
75
|
src/jarvis/jarvis_tools/file_analyzer.py
|
|
76
76
|
src/jarvis/jarvis_tools/file_operation.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_code_agent/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_git_details/main.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_git_squash/__init__.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_git_squash/main.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_lsp/registry.py
RENAMED
|
File without changes
|
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_mcp/__init__.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_mcp/sse_mcp_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_methodology/main.py
RENAMED
|
File without changes
|
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_multi_agent/main.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_platform/__init__.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_platform/base.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_platform/human.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_platform/kimi.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_platform/registry.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_platform/yuanbao.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_smart_shell/main.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/__init__.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/ask_codebase.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/ask_user.py
RENAMED
|
File without changes
|
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/chdir.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/code_plan.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/file_analyzer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/methodology.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/read_code.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/read_webpage.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/registry.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/search_web.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_tools/virtual_tty.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_utils/config.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_utils/embedding.py
RENAMED
|
File without changes
|
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_utils/git_utils.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_utils/globals.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_utils/input.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_utils/methodology.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_utils/output.py
RENAMED
|
File without changes
|
|
File without changes
|
{jarvis_ai_assistant-0.1.161 → jarvis_ai_assistant-0.1.162}/src/jarvis/jarvis_utils/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|