jarvis-ai-assistant 0.1.199__py3-none-any.whl → 0.1.200__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.1.199"
4
+ __version__ = "0.1.200"
@@ -821,6 +821,11 @@ arguments:
821
821
  f"模型交互期间被中断,请输入用户干预信息:"
822
822
  )
823
823
  if user_input:
824
+ # 如果有工具调用且用户确认继续,则将干预信息和工具执行结果拼接为prompt
825
+ if any(handler.can_handle(current_response) for handler in self.output_handler):
826
+ if user_confirm("检测到有工具调用,是否继续处理工具调用?", True):
827
+ self.prompt = f"{user_input}\n\n{current_response}"
828
+ continue
824
829
  self.prompt += f"{user_input}"
825
830
  continue
826
831
 
@@ -45,6 +45,7 @@ def builtin_input_handler(user_input: str, agent_: Any) -> Tuple[str, bool]:
45
45
  tool_registry_ if tool_registry_ else ToolRegistry()
46
46
  )
47
47
  agent.set_addon_prompt(tool_registry.prompt())
48
+ return "", False
48
49
  elif tag == "ReloadConfig":
49
50
  from jarvis.jarvis_utils.utils import load_config
50
51
 
@@ -98,7 +98,7 @@ class YuanbaoPlatform(BasePlatform):
98
98
 
99
99
  try:
100
100
  response = while_success(
101
- lambda: requests.post(url, headers=headers, data=payload), sleep_time=5
101
+ lambda: requests.post(url, headers=headers, data=payload, timeout=600), sleep_time=5
102
102
  )
103
103
  response_json = response.json()
104
104
 
@@ -264,7 +264,7 @@ class YuanbaoPlatform(BasePlatform):
264
264
 
265
265
  try:
266
266
  response = while_success(
267
- lambda: requests.post(url, headers=headers, json=payload), sleep_time=5
267
+ lambda: requests.post(url, headers=headers, json=payload, timeout=600), sleep_time=5
268
268
  )
269
269
 
270
270
  if response.status_code != 200:
@@ -482,7 +482,7 @@ class YuanbaoPlatform(BasePlatform):
482
482
  try:
483
483
  # 发送消息请求,获取流式响应
484
484
  response = while_success(
485
- lambda: requests.post(url, headers=headers, json=payload, stream=True),
485
+ lambda: requests.post(url, headers=headers, json=payload, stream=True, timeout=600),
486
486
  sleep_time=5,
487
487
  )
488
488
 
@@ -556,7 +556,7 @@ class YuanbaoPlatform(BasePlatform):
556
556
 
557
557
  try:
558
558
  response = while_success(
559
- lambda: requests.post(url, headers=headers, json=payload), sleep_time=5
559
+ lambda: requests.post(url, headers=headers, json=payload, timeout=600), sleep_time=5
560
560
  )
561
561
 
562
562
  if response.status_code == 200:
@@ -96,92 +96,4 @@ code_plan工具将:
96
96
  """,
97
97
  "description": "执行静态代码检查",
98
98
  },
99
- "ToolHelp": {
100
- "append": False,
101
- "template": """
102
- <tool_system_guide>
103
- <introduction>
104
- # 🛠️ 工具使用系统
105
- 您正在使用一个需要精确格式和严格规则的工具执行系统。
106
- </introduction>
107
-
108
- <format>
109
- # 📋 工具调用格式
110
- {ot("TOOL_CALL")}
111
- want: 想要从执行结果中获取到的信息,如果工具输出内容过长,会根据此字段尝试提取有效信息
112
- name: 工具名称
113
- arguments:
114
- param1: 值1
115
- param2: 值2
116
- {ct("TOOL_CALL")}
117
- </format>
118
-
119
- <rules>
120
- # ❗ 关键规则
121
- <rule>
122
- ### 1. 每次只使用一个工具
123
- - 一次只执行一个工具
124
- - 等待结果后再进行下一步
125
- </rule>
126
-
127
- <rule>
128
- ### 2. 严格遵守格式
129
- - 完全按照上述格式
130
- - 使用正确的YAML格式,2个空格作为缩进
131
- - 包含所有必需参数
132
- </rule>
133
-
134
- <rule>
135
- ### 3. 结果处理
136
- - 等待执行结果
137
- - 不要假设结果
138
- - 不要创建虚假响应
139
- - 不要想象对话
140
- </rule>
141
-
142
- <rule>
143
- ### 4. 信息管理
144
- - 如果信息不足,询问用户
145
- - 跳过不必要的步骤
146
- - 如果卡住,请求指导
147
- - 不要在没有完整信息的情况下继续
148
- </rule>
149
- </rules>
150
-
151
- <string_format>
152
- # 📝 字符串参数格式
153
- 始终使用 |2 语法表示字符串参数,防止多行字符串行首空格引起歧义:
154
-
155
- {ot("TOOL_CALL")}
156
- want: 当前的git状态,期望获取xxx的提交记录
157
- name: execute_script
158
- arguments:
159
- interpreter: bash
160
- script_cotent: |2
161
- git status --porcelain
162
- {ct("TOOL_CALL")}
163
- </string_format>
164
-
165
- <best_practices>
166
- # 💡 最佳实践
167
- - 准备好后立即开始执行
168
- - 无需请求许可即可开始
169
- - 使用正确的字符串格式
170
- - 监控进度并调整
171
- - 遇到困难时请求帮助
172
- </best_practices>
173
-
174
- <common_errors>
175
- # ⚠️ 常见错误
176
- - 同时调用多个工具
177
- - 字符串参数缺少 |2
178
- - 假设工具结果
179
- - 创建虚构对话
180
- - 在没有所需信息的情况下继续
181
- - yaml 格式错误
182
- </common_errors>
183
- </tool_system_guide>
184
- """,
185
- "description": "工具使用系统",
186
- },
187
99
  }
@@ -3,12 +3,14 @@ import hashlib
3
3
  import os
4
4
  import signal
5
5
  import subprocess
6
+ import sys
6
7
  import tarfile
7
8
  import time
8
9
  from pathlib import Path
9
10
  from typing import Any, Callable, Dict, Optional
10
11
 
11
12
  import yaml
13
+
12
14
  from jarvis import __version__
13
15
  from jarvis.jarvis_utils.config import (get_data_dir, get_max_big_content_size,
14
16
  set_global_env_data)
@@ -89,7 +91,11 @@ def init_env(welcome_str: str, config_file: Optional[str] = None) -> None:
89
91
  # 检查是否是git仓库并更新
90
92
  from jarvis.jarvis_utils.git_utils import check_and_update_git_repo
91
93
 
92
- check_and_update_git_repo(str(script_dir))
94
+ if check_and_update_git_repo(str(script_dir)):
95
+ # 更新成功,用当前命令行参数启动新进程
96
+ os.execv(sys.executable, [sys.executable] + sys.argv)
97
+ # 如果execv失败,退出当前进程
98
+ sys.exit(0)
93
99
 
94
100
 
95
101
  def load_config():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.1.199
3
+ Version: 0.1.200
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,6 +1,6 @@
1
- jarvis/__init__.py,sha256=tXkivau40d78Z7nHzkRcchadVpBr5PZG5ETLDQcLXio,75
2
- jarvis/jarvis_agent/__init__.py,sha256=3CfmmDU9ccEtJmRAtY86cdBm6NUYWatAsbgQFjs0t6M,33880
3
- jarvis/jarvis_agent/builtin_input_handler.py,sha256=4CCEtVLRBIpkhDUKd54VcX1JFCIWCvDqDh4B1H-eSn0,2187
1
+ jarvis/__init__.py,sha256=ePqWF92FI0LF1Btg_GrnhZEoxtiseFY4-wiB5EEsh-U,75
2
+ jarvis/jarvis_agent/__init__.py,sha256=X5BWIOzxXUWtCbpDkTFfUYskf6sbNzb1qQu8nQ4NN1k,34371
3
+ jarvis/jarvis_agent/builtin_input_handler.py,sha256=1V7kV5Zhw2HE3Xgjs1R-43RZ2huq3Kg-32NCdNnyZmA,2216
4
4
  jarvis/jarvis_agent/jarvis.py,sha256=GH2zi8eXNpW8twiY3LKDEZgGmFC5geB0jlkwFrm7hOQ,6279
5
5
  jarvis/jarvis_agent/main.py,sha256=c6bQe-8LXvW2-NBn9Rn_yPYdrwnkJ8KQaSFY2cPvkxw,2775
6
6
  jarvis/jarvis_agent/output_handler.py,sha256=P7oWpXBGFfOsWq7cIhS_z9crkQ19ES7qU5pM92KKjAs,1172
@@ -51,7 +51,7 @@ jarvis/jarvis_platform/kimi.py,sha256=uIpSWQ3MqDBYYMROeXin_YqM2LFrovMICKpwLWO1OD
51
51
  jarvis/jarvis_platform/openai.py,sha256=uEjBikfFj7kp5wondLvOx4WdkmTX0aqF6kixxAufcHg,4806
52
52
  jarvis/jarvis_platform/registry.py,sha256=Sz4ADAaxuufpAQG0KSQZuL1yALzH-aF3FDapkNn5foE,8107
53
53
  jarvis/jarvis_platform/tongyi.py,sha256=zu1bE-LdF_Sohwb5FxoIkDOTI0Lv5G_XhuSOPI20Gf8,21190
54
- jarvis/jarvis_platform/yuanbao.py,sha256=1PagfRWvGylUaeUe7yiBnGjYZ1HQk3uruogfKem84ss,21394
54
+ jarvis/jarvis_platform/yuanbao.py,sha256=nzdizTNM1d9OWfxkAZjBkhA_hllNPekpcv2vhJiPUB0,21446
55
55
  jarvis/jarvis_platform_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
56
  jarvis/jarvis_platform_manager/main.py,sha256=BdBH2tPzq7p9Mvii7abu6M7uj4lfG05gwjYfMqU5HUA,29567
57
57
  jarvis/jarvis_smart_shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -78,7 +78,7 @@ jarvis/jarvis_tools/virtual_tty.py,sha256=KKr3jpvQWWMPr2o40hlmN6fuXJCN8H4_ma5QU4
78
78
  jarvis/jarvis_tools/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
79
  jarvis/jarvis_tools/cli/main.py,sha256=Mg6TQDxMdzB1Ua1UrZ2EE-uQWsbaeojWaEGHJp2HimA,6375
80
80
  jarvis/jarvis_utils/__init__.py,sha256=67h0ldisGlh3oK4DAeNEL2Bl_VsI3tSmfclasyVlueM,850
81
- jarvis/jarvis_utils/builtin_replace_map.py,sha256=s7C5wKhoKkv-O4ltMcDzNpv5oGPC1EbXgiohPHAqksw,4892
81
+ jarvis/jarvis_utils/builtin_replace_map.py,sha256=9QKElsyIoZaq4ssZRlCfJPf2i92WuKIHlqOfyBZQmLs,2939
82
82
  jarvis/jarvis_utils/config.py,sha256=OomZRIeRHiBntKXdqYP1ArI8aqRFqtMlLkd9-VSd5dA,7364
83
83
  jarvis/jarvis_utils/embedding.py,sha256=suqKOgH4cq2HYj4xvNpqDPN9pyc3hTCl934xYonF6qk,3922
84
84
  jarvis/jarvis_utils/file_processors.py,sha256=XiM248SHS7lLgQDCbORVFWqinbVDUawYxWDOsLXDxP8,3043
@@ -89,10 +89,10 @@ jarvis/jarvis_utils/jarvis_history.py,sha256=Td6cmze9Oc5-Ewz0l9RKYeSg_-fbEu9ZhyE
89
89
  jarvis/jarvis_utils/methodology.py,sha256=MhPrMxMqElyAn54BDfpQdUqrRr7IbSlrLvAI39LCgTM,8487
90
90
  jarvis/jarvis_utils/output.py,sha256=PRCgudPOB8gMEP3u-g0FGD2c6tBgJhLXUMqNPglfjV8,10813
91
91
  jarvis/jarvis_utils/tag.py,sha256=f211opbbbTcSyzCDwuIK_oCnKhXPNK-RknYyGzY1yD0,431
92
- jarvis/jarvis_utils/utils.py,sha256=ZtI7UoZxTA2i5koO0GUKZvj8K6RlOmL8dGT4wnm20kE,11966
93
- jarvis_ai_assistant-0.1.199.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
94
- jarvis_ai_assistant-0.1.199.dist-info/METADATA,sha256=66SM4uj6AbqzkyeICMhTL-FAJ_4U1ptY_CqN7MwGjNg,20215
95
- jarvis_ai_assistant-0.1.199.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
96
- jarvis_ai_assistant-0.1.199.dist-info/entry_points.txt,sha256=Gy3DOP1PYLMK0GCj4rrP_9lkOyBQ39EK_lKGUSwn41E,869
97
- jarvis_ai_assistant-0.1.199.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
98
- jarvis_ai_assistant-0.1.199.dist-info/RECORD,,
92
+ jarvis/jarvis_utils/utils.py,sha256=RYFQx7OkOu3fe_QhS-5jx7O06k_58X14S-9PFJgwOa4,12178
93
+ jarvis_ai_assistant-0.1.200.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
94
+ jarvis_ai_assistant-0.1.200.dist-info/METADATA,sha256=ZCSRI6f3QMXnALhhPRM0ZjlnWQUYn0AhoqbtsA0xzRk,20215
95
+ jarvis_ai_assistant-0.1.200.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
96
+ jarvis_ai_assistant-0.1.200.dist-info/entry_points.txt,sha256=Gy3DOP1PYLMK0GCj4rrP_9lkOyBQ39EK_lKGUSwn41E,869
97
+ jarvis_ai_assistant-0.1.200.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
98
+ jarvis_ai_assistant-0.1.200.dist-info/RECORD,,