jarvis-ai-assistant 0.1.191__py3-none-any.whl → 0.1.192__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 +1 -1
- jarvis/jarvis_agent/__init__.py +6 -5
- jarvis/jarvis_code_agent/code_agent.py +3 -8
- jarvis/jarvis_platform/openai.py +9 -0
- jarvis/jarvis_utils/globals.py +40 -19
- jarvis/jarvis_utils/utils.py +3 -3
- {jarvis_ai_assistant-0.1.191.dist-info → jarvis_ai_assistant-0.1.192.dist-info}/METADATA +1 -1
- {jarvis_ai_assistant-0.1.191.dist-info → jarvis_ai_assistant-0.1.192.dist-info}/RECORD +12 -12
- {jarvis_ai_assistant-0.1.191.dist-info → jarvis_ai_assistant-0.1.192.dist-info}/WHEEL +0 -0
- {jarvis_ai_assistant-0.1.191.dist-info → jarvis_ai_assistant-0.1.192.dist-info}/entry_points.txt +0 -0
- {jarvis_ai_assistant-0.1.191.dist-info → jarvis_ai_assistant-0.1.192.dist-info}/licenses/LICENSE +0 -0
- {jarvis_ai_assistant-0.1.191.dist-info → jarvis_ai_assistant-0.1.192.dist-info}/top_level.txt +0 -0
jarvis/__init__.py
CHANGED
jarvis/jarvis_agent/__init__.py
CHANGED
@@ -772,17 +772,18 @@ arguments:
|
|
772
772
|
|
773
773
|
if need_return:
|
774
774
|
return self.prompt
|
775
|
-
|
776
|
-
if self.after_tool_call_cb:
|
777
|
-
self.after_tool_call_cb(self)
|
778
|
-
|
775
|
+
|
779
776
|
if get_interrupt():
|
780
777
|
set_interrupt(False)
|
781
778
|
user_input = self.multiline_inputer(
|
782
779
|
f"模型交互期间被中断,请输入用户干预信息:"
|
783
780
|
)
|
784
781
|
if user_input:
|
785
|
-
self.prompt += f"
|
782
|
+
self.prompt += f"{user_input}"
|
783
|
+
continue
|
784
|
+
|
785
|
+
if self.after_tool_call_cb:
|
786
|
+
self.after_tool_call_cb(self)
|
786
787
|
|
787
788
|
if self.prompt or self.addon_prompt:
|
788
789
|
continue
|
@@ -301,12 +301,7 @@ class CodeAgent:
|
|
301
301
|
|
302
302
|
# 添加提交信息到final_ret
|
303
303
|
if commits:
|
304
|
-
final_ret += "
|
305
|
-
final_ret += "# 提交信息:\n"
|
306
|
-
for commit_hash, commit_message in commits:
|
307
|
-
final_ret += f"- {commit_hash[:7]}: {commit_message}\n"
|
308
|
-
|
309
|
-
final_ret += f"# 应用补丁:\n```diff\n{diff}\n```"
|
304
|
+
final_ret += "代码已修改完成\n"
|
310
305
|
|
311
306
|
# 修改后的提示逻辑
|
312
307
|
lint_tools_info = "\n".join(
|
@@ -325,9 +320,9 @@ class CodeAgent:
|
|
325
320
|
"""
|
326
321
|
agent.set_addon_prompt(addon_prompt)
|
327
322
|
else:
|
328
|
-
final_ret += "
|
323
|
+
final_ret += "修改没有生效"
|
329
324
|
else:
|
330
|
-
final_ret += "
|
325
|
+
final_ret += "修改被拒绝\n"
|
331
326
|
final_ret += f"# 补丁预览:\n```diff\n{diff}\n```"
|
332
327
|
else:
|
333
328
|
return
|
jarvis/jarvis_platform/openai.py
CHANGED
@@ -160,4 +160,13 @@ class OpenAIModel(BasePlatform):
|
|
160
160
|
返回:
|
161
161
|
bool: 当前是否支持网页访问 (OpenAI平台始终返回False)
|
162
162
|
"""
|
163
|
+
return False
|
164
|
+
|
165
|
+
def support_upload_files(self) -> bool:
|
166
|
+
"""
|
167
|
+
检查是否支持上传文件功能
|
168
|
+
|
169
|
+
返回:
|
170
|
+
bool: 当前是否支持上传文件 (OpenAI平台始终返回False)
|
171
|
+
"""
|
163
172
|
return False
|
jarvis/jarvis_utils/globals.py
CHANGED
@@ -24,23 +24,27 @@ current_agent_name: str = ""
|
|
24
24
|
# 表示与大模型交互的深度(>0表示正在交互)
|
25
25
|
g_in_chat: int = 0
|
26
26
|
# 表示是否接收到中断信号
|
27
|
-
g_interrupt:
|
27
|
+
g_interrupt: int = 0
|
28
28
|
# 使用自定义主题配置rich控制台
|
29
|
-
custom_theme = Theme(
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
29
|
+
custom_theme = Theme(
|
30
|
+
{
|
31
|
+
"INFO": "yellow",
|
32
|
+
"WARNING": "yellow",
|
33
|
+
"ERROR": "red",
|
34
|
+
"SUCCESS": "green",
|
35
|
+
"SYSTEM": "cyan",
|
36
|
+
"CODE": "green",
|
37
|
+
"RESULT": "blue",
|
38
|
+
"PLANNING": "magenta",
|
39
|
+
"PROGRESS": "white",
|
40
|
+
"DEBUG": "blue",
|
41
|
+
"USER": "green",
|
42
|
+
"TOOL": "yellow",
|
43
|
+
}
|
44
|
+
)
|
43
45
|
console = Console(theme=custom_theme)
|
46
|
+
|
47
|
+
|
44
48
|
def make_agent_name(agent_name: str) -> str:
|
45
49
|
"""
|
46
50
|
通过附加后缀生成唯一的代理名称(如果必要)。
|
@@ -57,6 +61,8 @@ def make_agent_name(agent_name: str) -> str:
|
|
57
61
|
i += 1
|
58
62
|
return f"{agent_name}_{i}"
|
59
63
|
return agent_name
|
64
|
+
|
65
|
+
|
60
66
|
def set_agent(agent_name: str, agent: Any) -> None:
|
61
67
|
"""
|
62
68
|
设置当前代理并将其添加到全局代理集合中。
|
@@ -68,6 +74,8 @@ def set_agent(agent_name: str, agent: Any) -> None:
|
|
68
74
|
global_agents.add(agent_name)
|
69
75
|
global current_agent_name
|
70
76
|
current_agent_name = agent_name
|
77
|
+
|
78
|
+
|
71
79
|
def get_agent_list() -> str:
|
72
80
|
"""
|
73
81
|
获取表示当前代理状态的格式化字符串。
|
@@ -75,7 +83,13 @@ def get_agent_list() -> str:
|
|
75
83
|
返回:
|
76
84
|
str: 包含代理数量和当前代理名称的格式化字符串
|
77
85
|
"""
|
78
|
-
return
|
86
|
+
return (
|
87
|
+
"[" + str(len(global_agents)) + "]" + current_agent_name
|
88
|
+
if global_agents
|
89
|
+
else ""
|
90
|
+
)
|
91
|
+
|
92
|
+
|
79
93
|
def delete_agent(agent_name: str) -> None:
|
80
94
|
"""
|
81
95
|
从全局代理集合中删除一个代理。
|
@@ -88,6 +102,7 @@ def delete_agent(agent_name: str) -> None:
|
|
88
102
|
global current_agent_name
|
89
103
|
current_agent_name = ""
|
90
104
|
|
105
|
+
|
91
106
|
def set_in_chat(status: bool) -> None:
|
92
107
|
"""
|
93
108
|
设置与大模型交互的状态。
|
@@ -101,6 +116,7 @@ def set_in_chat(status: bool) -> None:
|
|
101
116
|
else:
|
102
117
|
g_in_chat = max(0, g_in_chat - 1)
|
103
118
|
|
119
|
+
|
104
120
|
def get_in_chat() -> bool:
|
105
121
|
"""
|
106
122
|
获取当前是否正在与大模型交互的状态。
|
@@ -110,6 +126,7 @@ def get_in_chat() -> bool:
|
|
110
126
|
"""
|
111
127
|
return g_in_chat > 0
|
112
128
|
|
129
|
+
|
113
130
|
def set_interrupt(status: bool) -> None:
|
114
131
|
"""
|
115
132
|
设置中断信号状态。
|
@@ -118,13 +135,17 @@ def set_interrupt(status: bool) -> None:
|
|
118
135
|
status: 中断状态
|
119
136
|
"""
|
120
137
|
global g_interrupt
|
121
|
-
|
138
|
+
if status:
|
139
|
+
g_interrupt += 1
|
140
|
+
else:
|
141
|
+
g_interrupt = 0
|
142
|
+
|
122
143
|
|
123
|
-
def get_interrupt() ->
|
144
|
+
def get_interrupt() -> int:
|
124
145
|
"""
|
125
146
|
获取当前中断信号状态。
|
126
147
|
|
127
148
|
返回:
|
128
|
-
|
149
|
+
int: 当前中断计数
|
129
150
|
"""
|
130
151
|
return g_interrupt
|
jarvis/jarvis_utils/utils.py
CHANGED
@@ -15,7 +15,7 @@ from jarvis.jarvis_utils.config import get_data_dir, get_max_big_content_size, s
|
|
15
15
|
from jarvis.jarvis_utils.embedding import get_context_token_count
|
16
16
|
from jarvis.jarvis_utils.input import get_single_line_input
|
17
17
|
from jarvis.jarvis_utils.output import OutputType, PrettyOutput
|
18
|
-
from jarvis.jarvis_utils.globals import get_in_chat, set_interrupt
|
18
|
+
from jarvis.jarvis_utils.globals import get_in_chat, get_interrupt, set_interrupt
|
19
19
|
|
20
20
|
|
21
21
|
|
@@ -38,10 +38,10 @@ def init_env(welcome_str: str, config_file: Optional[str] = None) -> None:
|
|
38
38
|
|
39
39
|
def sigint_handler(signum, frame):
|
40
40
|
if get_in_chat():
|
41
|
-
PrettyOutput.print("接收到SIGINT信号,正在设置中断标志...", OutputType.INFO)
|
42
41
|
set_interrupt(True)
|
42
|
+
if get_interrupt() > 5 and original_sigint and callable(original_sigint):
|
43
|
+
original_sigint(signum, frame)
|
43
44
|
else:
|
44
|
-
PrettyOutput.print("接收到SIGINT信号,正在优雅退出...", OutputType.INFO)
|
45
45
|
if original_sigint and callable(original_sigint):
|
46
46
|
original_sigint(signum, frame)
|
47
47
|
|
@@ -1,5 +1,5 @@
|
|
1
|
-
jarvis/__init__.py,sha256=
|
2
|
-
jarvis/jarvis_agent/__init__.py,sha256=
|
1
|
+
jarvis/__init__.py,sha256=5_sLz94_CMqE2he4vQ7HAZhBu30-NLMM4jT2UvSUt2c,74
|
2
|
+
jarvis/jarvis_agent/__init__.py,sha256=ZB3Tt09qwCO68vY62ogzfvvdF4HMQcEV6EjPUsJpuR8,29806
|
3
3
|
jarvis/jarvis_agent/builtin_input_handler.py,sha256=f4DaEHPakXcAbgykFP-tiOQP6fh_yGFlZx_h91_j2tQ,1529
|
4
4
|
jarvis/jarvis_agent/file_input_handler.py,sha256=OfoYI5on6w5BDUUg4OadFcfWzMsUF70GNrlt9QyauvA,4181
|
5
5
|
jarvis/jarvis_agent/jarvis.py,sha256=zfYlwXaZJYfwvNeU5IUSlURyY0pn7QxsHmXBqSptUo8,6105
|
@@ -7,7 +7,7 @@ jarvis/jarvis_agent/main.py,sha256=miR8wnWBzmbhOfnscyiKo1oI4wZBRU6FEE-k1lkqtiI,2
|
|
7
7
|
jarvis/jarvis_agent/output_handler.py,sha256=7qori-RGrQmdiFepoEe3oPPKJIvRt90l_JDmvCoa4zA,1219
|
8
8
|
jarvis/jarvis_agent/shell_input_handler.py,sha256=pi3AtPKrkKc6K9e99S1djKXQ_XrxtP6FrSWebQmRT6E,1261
|
9
9
|
jarvis/jarvis_code_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
|
-
jarvis/jarvis_code_agent/code_agent.py,sha256=
|
10
|
+
jarvis/jarvis_code_agent/code_agent.py,sha256=4nYYPFGSr7U8TGbqhayMOOHK6NZRzd-H4JcM4FDNcMk,15522
|
11
11
|
jarvis/jarvis_code_agent/lint.py,sha256=TZlhNbeaoLzO9DzExjN5GAjrt66owd8lyQV56LTfkrs,4370
|
12
12
|
jarvis/jarvis_code_analysis/code_review.py,sha256=45MPcXullg55w6E0Xhm2dDj6TGmkUxNNI2LJWexnTKQ,30123
|
13
13
|
jarvis/jarvis_code_analysis/checklists/__init__.py,sha256=cKQ_FOGy5TQgM-YkRCqORo-mUOZaPAJ9VDmZoFX58us,78
|
@@ -50,7 +50,7 @@ jarvis/jarvis_platform/__init__.py,sha256=0YnsUoM4JkIBOtImFdjfuDbrqQZT3dEaAwSJ62
|
|
50
50
|
jarvis/jarvis_platform/base.py,sha256=MAY2Xe8WECOfisd-7_F8LXqzsIswkVwlVzXEj-D5Vlg,7186
|
51
51
|
jarvis/jarvis_platform/human.py,sha256=MkKdwZ8oY5eacjHOEjUCUwDCJJnXtlzU8o8_jJAMdaA,2566
|
52
52
|
jarvis/jarvis_platform/kimi.py,sha256=m45UlTkE3XhZZ3XfQk4degpKWsy5yrdzBHi9pDvmoZk,12100
|
53
|
-
jarvis/jarvis_platform/openai.py,sha256=
|
53
|
+
jarvis/jarvis_platform/openai.py,sha256=iXsJ52e7zGaKNho1Lzg4_rjXUwLn0wpVmWCLZ0k4xU8,4985
|
54
54
|
jarvis/jarvis_platform/registry.py,sha256=qq19f9HoISxpVf09t1oEuOgzLXP8QT1mDzWAI5ifIHc,7819
|
55
55
|
jarvis/jarvis_platform/tongyi.py,sha256=Q0MCqKofuoQpp6XiYBdgO6LA4vJPEiTvVvKGgwJcpII,21062
|
56
56
|
jarvis/jarvis_platform/yuanbao.py,sha256=wpJxYS8lF9c-1F5S6pFSdKhipXkQREtErtn5WgCblCQ,20750
|
@@ -85,15 +85,15 @@ jarvis/jarvis_utils/config.py,sha256=Z7pZsSYXJkc2RzUhJ-_VvQA3xOLo6LEo4nEE1ftyQY8
|
|
85
85
|
jarvis/jarvis_utils/embedding.py,sha256=J8YAqIEj16TJIPEG24uvUlPHeN-5zq0JW_hbNLizQug,3832
|
86
86
|
jarvis/jarvis_utils/file_processors.py,sha256=G5kQI7vCGIDnjgAB5J1dYIR102u6WUv3IhcWFfDh_gs,2977
|
87
87
|
jarvis/jarvis_utils/git_utils.py,sha256=k0rrMAbKwnD7hztmtegxtFFiCzyID4p2oHKTycE2Q-4,15070
|
88
|
-
jarvis/jarvis_utils/globals.py,sha256=
|
88
|
+
jarvis/jarvis_utils/globals.py,sha256=908DizIMrInuOlirTp5lsOfqbD6K2v18P_J7A8nrdus,3375
|
89
89
|
jarvis/jarvis_utils/input.py,sha256=FkLW7MXL8awQUghFLQnW1r5F1wV8K3EZeVPwHFRHJTo,7458
|
90
90
|
jarvis/jarvis_utils/methodology.py,sha256=6vf__ahwJZ2I62mWGAvh2C-G6pq930Dh_EkrY1VpduQ,8485
|
91
91
|
jarvis/jarvis_utils/output.py,sha256=QboL42GtG_dnvd1O64sl8o72mEBhXNRADPXQMXgDE7Q,9661
|
92
92
|
jarvis/jarvis_utils/tag.py,sha256=YJHmuedLb7_AiqvKQetHr4R1FxyzIh7HN0RRkWMmYbU,429
|
93
|
-
jarvis/jarvis_utils/utils.py,sha256=
|
94
|
-
jarvis_ai_assistant-0.1.
|
95
|
-
jarvis_ai_assistant-0.1.
|
96
|
-
jarvis_ai_assistant-0.1.
|
97
|
-
jarvis_ai_assistant-0.1.
|
98
|
-
jarvis_ai_assistant-0.1.
|
99
|
-
jarvis_ai_assistant-0.1.
|
93
|
+
jarvis/jarvis_utils/utils.py,sha256=r9Xnf84jR2E1CfHBtYVF_sPZ74-S4W63aPleBQZtdYo,11597
|
94
|
+
jarvis_ai_assistant-0.1.192.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
|
95
|
+
jarvis_ai_assistant-0.1.192.dist-info/METADATA,sha256=L-16MCi-TdoxaluwVvuq1KVUKJazX05Ell2ZqMToJq0,17829
|
96
|
+
jarvis_ai_assistant-0.1.192.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
97
|
+
jarvis_ai_assistant-0.1.192.dist-info/entry_points.txt,sha256=Gy3DOP1PYLMK0GCj4rrP_9lkOyBQ39EK_lKGUSwn41E,869
|
98
|
+
jarvis_ai_assistant-0.1.192.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
|
99
|
+
jarvis_ai_assistant-0.1.192.dist-info/RECORD,,
|
File without changes
|
{jarvis_ai_assistant-0.1.191.dist-info → jarvis_ai_assistant-0.1.192.dist-info}/entry_points.txt
RENAMED
File without changes
|
{jarvis_ai_assistant-0.1.191.dist-info → jarvis_ai_assistant-0.1.192.dist-info}/licenses/LICENSE
RENAMED
File without changes
|
{jarvis_ai_assistant-0.1.191.dist-info → jarvis_ai_assistant-0.1.192.dist-info}/top_level.txt
RENAMED
File without changes
|