jarvis-ai-assistant 0.1.150__tar.gz → 0.1.152__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.150 → jarvis_ai_assistant-0.1.152}/MANIFEST.in +2 -1
- {jarvis_ai_assistant-0.1.150/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.1.152}/PKG-INFO +31 -2
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/README.md +24 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/pyproject.toml +2 -1
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/setup.py +2 -1
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/__init__.py +1 -1
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_agent/__init__.py +6 -2
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_git_utils/git_commiter.py +7 -0
- jarvis_ai_assistant-0.1.152/src/jarvis/jarvis_mcp/__init__.py +65 -0
- jarvis_ai_assistant-0.1.152/src/jarvis/jarvis_mcp/sse_mcp_client.py +590 -0
- jarvis_ai_assistant-0.1.150/src/jarvis/jarvis_mcp/local_mcp_client.py → jarvis_ai_assistant-0.1.152/src/jarvis/jarvis_mcp/stdio_mcp_client.py +86 -1
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_tools/ask_codebase.py +3 -10
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_tools/registry.py +252 -147
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_utils/config.py +1 -1
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_utils/methodology.py +3 -3
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152/src/jarvis_ai_assistant.egg-info}/PKG-INFO +31 -2
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +2 -2
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis_ai_assistant.egg-info/requires.txt +1 -0
- jarvis_ai_assistant-0.1.150/src/jarvis/jarvis_mcp/__init__.py +0 -36
- jarvis_ai_assistant-0.1.150/src/jarvis/jarvis_mcp/remote_mcp_client.py +0 -230
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/LICENSE +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/setup.cfg +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_agent/builtin_input_handler.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_agent/file_input_handler.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_agent/jarvis.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_agent/main.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_agent/output_handler.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_agent/patch.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_agent/shell_input_handler.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_agent/code_agent.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_analysis/checklists/devops.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_analysis/checklists/docs.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_analysis/checklists/go.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_analysis/checklists/java.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_analysis/checklists/loader.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_analysis/checklists/php.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_analysis/checklists/python.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_analysis/checklists/rust.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_analysis/checklists/shell.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_analysis/checklists/sql.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_analysis/checklists/swift.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_analysis/checklists/web.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_code_analysis/code_review.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_dev/main.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_git_details/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_git_details/main.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_git_squash/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_git_squash/main.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_lsp/base.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_lsp/cpp.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_lsp/go.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_lsp/python.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_lsp/registry.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_lsp/rust.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_methodology/main.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_multi_agent/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_multi_agent/main.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_platform/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_platform/base.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_platform/kimi.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_platform/registry.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_platform/yuanbao.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_platform_manager/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_platform_manager/main.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_smart_shell/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_smart_shell/main.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_tools/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_tools/ask_user.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_tools/base.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_tools/chdir.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_tools/code_plan.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_tools/create_code_agent.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_tools/create_sub_agent.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_tools/execute_script.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_tools/file_analyzer.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_tools/file_operation.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_tools/find_methodology.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_tools/lsp_get_diagnostics.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_tools/methodology.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_tools/read_code.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_tools/read_webpage.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_tools/search_web.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_tools/virtual_tty.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_utils/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_utils/embedding.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_utils/file_processors.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_utils/git_utils.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_utils/globals.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_utils/input.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_utils/output.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_utils/utils.py +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis_ai_assistant.egg-info/entry_points.txt +0 -0
- {jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis_ai_assistant.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: jarvis-ai-assistant
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.152
|
|
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
|
|
@@ -54,11 +54,16 @@ Requires-Dist: transformers==4.46.3
|
|
|
54
54
|
Requires-Dist: torch==2.4.1
|
|
55
55
|
Requires-Dist: python-Levenshtein==0.25.1
|
|
56
56
|
Requires-Dist: sseclient==0.0.27
|
|
57
|
+
Requires-Dist: pillow==10.2.1
|
|
57
58
|
Provides-Extra: dev
|
|
58
59
|
Requires-Dist: pytest; extra == "dev"
|
|
59
60
|
Requires-Dist: black; extra == "dev"
|
|
60
61
|
Requires-Dist: isort; extra == "dev"
|
|
61
62
|
Requires-Dist: mypy; extra == "dev"
|
|
63
|
+
Dynamic: author
|
|
64
|
+
Dynamic: home-page
|
|
65
|
+
Dynamic: license-file
|
|
66
|
+
Dynamic: requires-python
|
|
62
67
|
|
|
63
68
|
# 🤖 Jarvis AI 助手
|
|
64
69
|
<p align="center">
|
|
@@ -276,6 +281,30 @@ class CustomTool:
|
|
|
276
281
|
```
|
|
277
282
|
|
|
278
283
|
|
|
284
|
+
### 添加MCP
|
|
285
|
+
MCP(模型上下文协议)。在`~/.jarvis/tools/mcp/`中创建YAML配置文件:
|
|
286
|
+
|
|
287
|
+
#### 本地MCP配置(`stdio`模式)
|
|
288
|
+
```yaml
|
|
289
|
+
type: local
|
|
290
|
+
name: MCP名称
|
|
291
|
+
command: 可执行命令
|
|
292
|
+
args: [参数列表] # 可选
|
|
293
|
+
env: # 可选环境变量
|
|
294
|
+
KEY: VALUE
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
#### 远程MCP配置(`sse`模式)
|
|
298
|
+
```yaml
|
|
299
|
+
type: remote
|
|
300
|
+
name: MCP名称
|
|
301
|
+
base_url: http://example.com/api
|
|
302
|
+
auth_token: 认证令牌 # 可选
|
|
303
|
+
headers: # 可选HTTP头
|
|
304
|
+
X-Custom-Header: value
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
|
|
279
308
|
### 添加新大模型平台
|
|
280
309
|
在 `~/.jarvis/platforms/` 中创建新的 Python 文件:
|
|
281
310
|
```python
|
|
@@ -214,6 +214,30 @@ class CustomTool:
|
|
|
214
214
|
```
|
|
215
215
|
|
|
216
216
|
|
|
217
|
+
### 添加MCP
|
|
218
|
+
MCP(模型上下文协议)。在`~/.jarvis/tools/mcp/`中创建YAML配置文件:
|
|
219
|
+
|
|
220
|
+
#### 本地MCP配置(`stdio`模式)
|
|
221
|
+
```yaml
|
|
222
|
+
type: local
|
|
223
|
+
name: MCP名称
|
|
224
|
+
command: 可执行命令
|
|
225
|
+
args: [参数列表] # 可选
|
|
226
|
+
env: # 可选环境变量
|
|
227
|
+
KEY: VALUE
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
#### 远程MCP配置(`sse`模式)
|
|
231
|
+
```yaml
|
|
232
|
+
type: remote
|
|
233
|
+
name: MCP名称
|
|
234
|
+
base_url: http://example.com/api
|
|
235
|
+
auth_token: 认证令牌 # 可选
|
|
236
|
+
headers: # 可选HTTP头
|
|
237
|
+
X-Custom-Header: value
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
|
|
217
241
|
### 添加新大模型平台
|
|
218
242
|
在 `~/.jarvis/platforms/` 中创建新的 Python 文件:
|
|
219
243
|
```python
|
|
@@ -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.152"
|
|
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" }]
|
|
@@ -40,6 +40,7 @@ dependencies = [
|
|
|
40
40
|
"torch==2.4.1",
|
|
41
41
|
"python-Levenshtein==0.25.1",
|
|
42
42
|
"sseclient==0.0.27",
|
|
43
|
+
"pillow==10.2.1",
|
|
43
44
|
]
|
|
44
45
|
requires-python = ">=3.8"
|
|
45
46
|
|
|
@@ -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.152",
|
|
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",
|
|
@@ -27,6 +27,7 @@ setup(
|
|
|
27
27
|
"torch==2.4.1",
|
|
28
28
|
"python-Levenshtein==0.25.1",
|
|
29
29
|
"sseclient==0.0.27",
|
|
30
|
+
"pillow==10.2.1",
|
|
30
31
|
],
|
|
31
32
|
entry_points={
|
|
32
33
|
"console_scripts": [
|
{jarvis_ai_assistant-0.1.150 → jarvis_ai_assistant-0.1.152}/src/jarvis/jarvis_agent/__init__.py
RENAMED
|
@@ -5,6 +5,7 @@ from typing import Any, Callable, List, Optional, Tuple, Union
|
|
|
5
5
|
from yaspin import yaspin
|
|
6
6
|
|
|
7
7
|
from jarvis.jarvis_agent.output_handler import OutputHandler
|
|
8
|
+
from jarvis.jarvis_agent.patch import PatchOutputHandler
|
|
8
9
|
from jarvis.jarvis_platform.base import BasePlatform
|
|
9
10
|
from jarvis.jarvis_platform.registry import PlatformRegistry
|
|
10
11
|
from jarvis.jarvis_utils.output import PrettyOutput, OutputType
|
|
@@ -193,7 +194,7 @@ class Agent:
|
|
|
193
194
|
self.model.set_suppress_output(False)
|
|
194
195
|
|
|
195
196
|
from jarvis.jarvis_tools.registry import ToolRegistry
|
|
196
|
-
self.output_handler = output_handler if output_handler else [ToolRegistry()]
|
|
197
|
+
self.output_handler = output_handler if output_handler else [ToolRegistry(), PatchOutputHandler()]
|
|
197
198
|
self.multiline_inputer = multiline_inputer if multiline_inputer else get_multiline_input
|
|
198
199
|
|
|
199
200
|
self.prompt = ""
|
|
@@ -591,7 +592,10 @@ arguments:
|
|
|
591
592
|
self.prompt = f"{user_input}"
|
|
592
593
|
|
|
593
594
|
if self.first:
|
|
594
|
-
|
|
595
|
+
msg = user_input
|
|
596
|
+
for handler in self.input_handler:
|
|
597
|
+
msg, _ = handler(msg, self)
|
|
598
|
+
self.prompt = f"{user_input}\n\n以下是历史类似问题的执行经验,可参考:\n{load_methodology(msg)}"
|
|
595
599
|
self.first = False
|
|
596
600
|
|
|
597
601
|
while True:
|
|
@@ -177,6 +177,13 @@ class GitCommitTool:
|
|
|
177
177
|
# 如果成功提取,就跳出循环
|
|
178
178
|
if commit_message:
|
|
179
179
|
break
|
|
180
|
+
prompt = f"""格式错误,请按照以下格式重新生成提交信息:
|
|
181
|
+
{ot("COMMIT_MESSAGE")}
|
|
182
|
+
<类型>(<范围>): <主题>
|
|
183
|
+
|
|
184
|
+
[可选] 详细描述变更内容和原因
|
|
185
|
+
{ct("COMMIT_MESSAGE")}
|
|
186
|
+
"""
|
|
180
187
|
spinner.write("✅ 生成提交消息")
|
|
181
188
|
|
|
182
189
|
# 执行提交
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
from typing import Any, Dict, List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class McpClient(ABC):
|
|
6
|
+
"""MCP客户端抽象基类"""
|
|
7
|
+
|
|
8
|
+
@abstractmethod
|
|
9
|
+
def get_tool_list(self) -> List[Dict[str, Any]]:
|
|
10
|
+
"""获取工具列表
|
|
11
|
+
|
|
12
|
+
返回:
|
|
13
|
+
List[Dict[str, Any]]: 工具列表,每个工具包含以下字段:
|
|
14
|
+
- name: str - 工具名称
|
|
15
|
+
- description: str - 工具描述
|
|
16
|
+
- parameters: Dict - 工具参数
|
|
17
|
+
"""
|
|
18
|
+
pass
|
|
19
|
+
|
|
20
|
+
@abstractmethod
|
|
21
|
+
def execute(self, tool_name: str, arguments: Dict[str, Any]) -> Dict[str, Any]:
|
|
22
|
+
"""执行工具
|
|
23
|
+
|
|
24
|
+
参数:
|
|
25
|
+
tool_name: 工具名称
|
|
26
|
+
arguments: 参数字典,包含工具执行所需的参数
|
|
27
|
+
|
|
28
|
+
返回:
|
|
29
|
+
Dict[str, Any]: 执行结果,包含以下字段:
|
|
30
|
+
- success: bool - 是否执行成功
|
|
31
|
+
- stdout: str - 标准输出
|
|
32
|
+
- stderr: str - 标准错误
|
|
33
|
+
"""
|
|
34
|
+
pass
|
|
35
|
+
|
|
36
|
+
@abstractmethod
|
|
37
|
+
def get_resource_list(self) -> List[Dict[str, Any]]:
|
|
38
|
+
"""获取资源列表
|
|
39
|
+
|
|
40
|
+
返回:
|
|
41
|
+
List[Dict[str, Any]]: 资源列表,每个资源包含以下字段:
|
|
42
|
+
- uri: str - 资源的唯一标识符
|
|
43
|
+
- name: str - 资源的名称
|
|
44
|
+
- description: str - 资源的描述(可选)
|
|
45
|
+
- mimeType: str - 资源的MIME类型(可选)
|
|
46
|
+
"""
|
|
47
|
+
pass
|
|
48
|
+
|
|
49
|
+
@abstractmethod
|
|
50
|
+
def get_resource(self, uri: str) -> Dict[str, Any]:
|
|
51
|
+
"""获取指定资源的内容
|
|
52
|
+
|
|
53
|
+
参数:
|
|
54
|
+
uri: str - 资源的URI标识符
|
|
55
|
+
|
|
56
|
+
返回:
|
|
57
|
+
Dict[str, Any]: 资源内容,包含以下字段:
|
|
58
|
+
- uri: str - 资源的URI
|
|
59
|
+
- mimeType: str - 资源的MIME类型(可选)
|
|
60
|
+
- text: str - 文本内容(如果是文本资源)
|
|
61
|
+
- blob: str - 二进制内容(如果是二进制资源,base64编码)
|
|
62
|
+
"""
|
|
63
|
+
pass
|
|
64
|
+
|
|
65
|
+
|