jarvis-ai-assistant 0.1.178__py3-none-any.whl → 0.1.180__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.

Potentially problematic release.


This version of jarvis-ai-assistant might be problematic. Click here for more details.

Files changed (66) hide show
  1. jarvis/__init__.py +1 -1
  2. jarvis/jarvis_agent/__init__.py +130 -79
  3. jarvis/jarvis_agent/builtin_input_handler.py +1 -1
  4. jarvis/jarvis_agent/jarvis.py +9 -13
  5. jarvis/jarvis_agent/main.py +4 -2
  6. jarvis/jarvis_code_agent/code_agent.py +34 -23
  7. jarvis/jarvis_code_agent/lint.py +164 -0
  8. jarvis/jarvis_code_analysis/checklists/loader.py +6 -20
  9. jarvis/jarvis_code_analysis/code_review.py +8 -6
  10. jarvis/jarvis_data/config_schema.json +260 -0
  11. jarvis/jarvis_dev/main.py +1 -8
  12. jarvis/jarvis_git_details/main.py +1 -1
  13. jarvis/jarvis_git_squash/main.py +5 -3
  14. jarvis/jarvis_git_utils/git_commiter.py +25 -24
  15. jarvis/jarvis_mcp/sse_mcp_client.py +6 -4
  16. jarvis/jarvis_mcp/stdio_mcp_client.py +5 -4
  17. jarvis/jarvis_mcp/streamable_mcp_client.py +404 -0
  18. jarvis/jarvis_methodology/main.py +10 -9
  19. jarvis/jarvis_multi_agent/main.py +3 -1
  20. jarvis/jarvis_platform/base.py +14 -8
  21. jarvis/jarvis_platform/human.py +3 -1
  22. jarvis/jarvis_platform/kimi.py +8 -27
  23. jarvis/jarvis_platform/openai.py +4 -16
  24. jarvis/jarvis_platform/registry.py +6 -2
  25. jarvis/jarvis_platform/yuanbao.py +9 -29
  26. jarvis/jarvis_platform_manager/main.py +11 -9
  27. jarvis/jarvis_smart_shell/main.py +7 -3
  28. jarvis/jarvis_tools/ask_codebase.py +4 -3
  29. jarvis/jarvis_tools/ask_user.py +2 -1
  30. jarvis/jarvis_tools/base.py +3 -1
  31. jarvis/jarvis_tools/chdir.py +2 -1
  32. jarvis/jarvis_tools/cli/main.py +1 -0
  33. jarvis/jarvis_tools/code_plan.py +5 -3
  34. jarvis/jarvis_tools/create_code_agent.py +5 -2
  35. jarvis/jarvis_tools/create_sub_agent.py +1 -3
  36. jarvis/jarvis_tools/edit_file.py +4 -4
  37. jarvis/jarvis_tools/execute_script.py +1 -1
  38. jarvis/jarvis_tools/file_analyzer.py +5 -3
  39. jarvis/jarvis_tools/file_operation.py +4 -7
  40. jarvis/jarvis_tools/find_methodology.py +4 -2
  41. jarvis/jarvis_tools/generate_new_tool.py +2 -1
  42. jarvis/jarvis_tools/methodology.py +3 -4
  43. jarvis/jarvis_tools/read_code.py +2 -1
  44. jarvis/jarvis_tools/read_webpage.py +3 -1
  45. jarvis/jarvis_tools/registry.py +60 -45
  46. jarvis/jarvis_tools/rewrite_file.py +2 -1
  47. jarvis/jarvis_tools/search_web.py +1 -0
  48. jarvis/jarvis_tools/virtual_tty.py +5 -4
  49. jarvis/jarvis_utils/__init__.py +2 -0
  50. jarvis/jarvis_utils/builtin_replace_map.py +1 -1
  51. jarvis/jarvis_utils/config.py +88 -17
  52. jarvis/jarvis_utils/embedding.py +4 -3
  53. jarvis/jarvis_utils/file_processors.py +1 -0
  54. jarvis/jarvis_utils/git_utils.py +83 -40
  55. jarvis/jarvis_utils/globals.py +4 -2
  56. jarvis/jarvis_utils/input.py +14 -7
  57. jarvis/jarvis_utils/methodology.py +6 -4
  58. jarvis/jarvis_utils/output.py +10 -6
  59. jarvis/jarvis_utils/utils.py +140 -24
  60. {jarvis_ai_assistant-0.1.178.dist-info → jarvis_ai_assistant-0.1.180.dist-info}/METADATA +66 -59
  61. jarvis_ai_assistant-0.1.180.dist-info/RECORD +99 -0
  62. jarvis_ai_assistant-0.1.178.dist-info/RECORD +0 -96
  63. {jarvis_ai_assistant-0.1.178.dist-info → jarvis_ai_assistant-0.1.180.dist-info}/WHEEL +0 -0
  64. {jarvis_ai_assistant-0.1.178.dist-info → jarvis_ai_assistant-0.1.180.dist-info}/entry_points.txt +0 -0
  65. {jarvis_ai_assistant-0.1.178.dist-info → jarvis_ai_assistant-0.1.180.dist-info}/licenses/LICENSE +0 -0
  66. {jarvis_ai_assistant-0.1.178.dist-info → jarvis_ai_assistant-0.1.180.dist-info}/top_level.txt +0 -0
@@ -1,25 +1,31 @@
1
1
  # -*- coding: utf-8 -*-
2
- import os
3
- import time
4
2
  import hashlib
3
+ import os
5
4
  import tarfile
5
+ import time
6
6
  from pathlib import Path
7
- from typing import Any, Callable
7
+ from typing import Any, Callable, Dict
8
+
9
+ import yaml
8
10
 
9
11
  from jarvis import __version__
10
- from jarvis.jarvis_utils.config import get_max_big_content_size, get_data_dir
12
+ from jarvis.jarvis_utils.config import get_data_dir, get_max_big_content_size, set_global_env_data
11
13
  from jarvis.jarvis_utils.embedding import get_context_token_count
12
14
  from jarvis.jarvis_utils.input import get_single_line_input
13
- from jarvis.jarvis_utils.output import PrettyOutput, OutputType
15
+ from jarvis.jarvis_utils.output import OutputType, PrettyOutput
16
+
17
+
18
+
14
19
  def init_env(welcome_str: str) -> None:
15
20
  """初始化环境变量从jarvis_data/env文件
16
-
17
21
  功能:
18
22
  1. 创建不存在的jarvis_data目录
19
23
  2. 加载环境变量到os.environ
20
24
  3. 处理文件读取异常
21
25
  4. 检查git仓库状态并在落后时更新
26
+ 5. 统计当前命令使用次数
22
27
  """
28
+ count_cmd_usage()
23
29
 
24
30
  jarvis_ascii_art = f"""
25
31
  ██╗ █████╗ ██████╗ ██╗ ██╗██╗███████╗
@@ -37,15 +43,16 @@ def init_env(welcome_str: str) -> None:
37
43
  PrettyOutput.print_gradient_text(jarvis_ascii_art, (0, 120, 255), (0, 255, 200))
38
44
 
39
45
  jarvis_dir = Path(get_data_dir())
40
- env_file = jarvis_dir / "env"
41
-
42
- script_dir = Path(os.path.dirname(os.path.dirname(__file__)))
43
- hf_archive = script_dir / "jarvis_data" / "huggingface.tar.gz"
46
+ config_file = jarvis_dir / "config.yaml"
44
47
 
45
48
  # 检查jarvis_data目录是否存在
46
49
  if not jarvis_dir.exists():
47
50
  jarvis_dir.mkdir(parents=True)
48
51
 
52
+ script_dir = Path(os.path.dirname(os.path.dirname(__file__)))
53
+ hf_archive = script_dir / "jarvis_data" / "huggingface.tar.gz"
54
+
55
+
49
56
  # 检查并解压huggingface模型
50
57
  hf_dir = jarvis_dir / "huggingface" / "hub"
51
58
  if not hf_dir.exists() and hf_archive.exists():
@@ -57,25 +64,91 @@ def init_env(welcome_str: str) -> None:
57
64
  except Exception as e:
58
65
  PrettyOutput.print(f"解压HuggingFace模型失败: {e}", OutputType.ERROR)
59
66
 
60
- if env_file.exists():
61
- try:
62
- with open(env_file, "r", encoding="utf-8", errors="ignore") as f:
63
- for line in f:
64
- line = line.strip()
65
- if line and not line.startswith(("#", ";")):
66
- try:
67
- key, value = line.split("=", 1)
68
- os.environ[key.strip()] = value.strip().strip("'").strip('"')
69
- except ValueError:
70
- continue
71
- except Exception as e:
72
- PrettyOutput.print(f"警告: 读取 {env_file} 失败: {e}", OutputType.WARNING)
67
+
68
+ if not config_file.exists():
69
+ old_config_file = jarvis_dir / "env"
70
+ if old_config_file.exists():# 旧的配置文件存在
71
+ _read_old_config_file(old_config_file)
72
+ else:
73
+ _read_config_file(jarvis_dir, config_file)
73
74
 
74
75
  # 检查是否是git仓库并更新
75
76
  from jarvis.jarvis_utils.git_utils import check_and_update_git_repo
76
77
 
77
78
  check_and_update_git_repo(str(script_dir))
78
79
 
80
+ def _read_config_file(jarvis_dir, config_file):
81
+ """读取并解析YAML格式的配置文件
82
+
83
+ 功能:
84
+ 1. 读取配置文件内容
85
+ 2. 检查并添加schema声明(如果缺失)
86
+ 3. 将配置数据保存到全局变量
87
+ 4. 设置环境变量(如果配置中有ENV字段)
88
+
89
+ 参数:
90
+ jarvis_dir: Jarvis数据目录路径
91
+ config_file: 配置文件路径
92
+ """
93
+ with open(config_file, "r", encoding="utf-8") as f:
94
+ content = f.read()
95
+ config_data = yaml.safe_load(content) or {}
96
+ if isinstance(config_data, dict):
97
+ # 检查是否已有schema声明,没有则添加
98
+ if "# yaml-language-server: $schema=" not in content:
99
+ schema_path = Path(os.path.relpath(
100
+ Path(__file__).parent.parent / "jarvis_data" / "config_schema.json",
101
+ start=jarvis_dir
102
+ ))
103
+ with open(config_file, "w", encoding="utf-8") as f:
104
+ f.write(f"# yaml-language-server: $schema={schema_path}\n")
105
+ f.write(content)
106
+ # 保存到全局变量
107
+ set_global_env_data(config_data)
108
+ # 如果配置中有ENV键值对,则设置环境变量
109
+ if "ENV" in config_data and isinstance(config_data["ENV"], dict):
110
+ os.environ.update({str(k): str(v) for k, v in config_data["ENV"].items() if v is not None})
111
+
112
+ def _read_old_config_file(config_file):
113
+ """读取并解析旧格式的env配置文件
114
+
115
+ 功能:
116
+ 1. 解析键值对格式的旧配置文件
117
+ 2. 支持多行值的处理
118
+ 3. 自动去除值的引号和空格
119
+ 4. 将配置数据保存到全局变量
120
+ 5. 设置环境变量并显示迁移警告
121
+
122
+ 参数:
123
+ config_file: 旧格式配置文件路径
124
+ """
125
+ config_data = {}
126
+ current_key = None
127
+ current_value = []
128
+ with open(config_file, "r", encoding="utf-8", errors="ignore") as f:
129
+ for line in f:
130
+ line = line.rstrip()
131
+ if not line or line.startswith(("#", ";")):
132
+ continue
133
+ if "=" in line and not line.startswith((" ", "\t")):
134
+ # 处理之前收集的多行值
135
+ if current_key is not None:
136
+ config_data[current_key] = "\n".join(current_value).strip().strip("'").strip('"')
137
+ current_value = []
138
+ # 解析新的键值对
139
+ key, value = line.split("=", 1)
140
+ current_key = key.strip()
141
+ current_value.append(value.strip())
142
+ elif current_key is not None:
143
+ # 多行值的后续行
144
+ current_value.append(line.strip())
145
+ # 处理最后一个键值对
146
+ if current_key is not None:
147
+ config_data[current_key] = "\n".join(current_value).strip().strip("'").strip('"')
148
+ os.environ.update({str(k): str(v) for k, v in config_data.items() if v is not None})
149
+ set_global_env_data(config_data)
150
+ PrettyOutput.print(f"检测到旧格式配置文件,旧格式以后将不再支持,请尽快迁移到新格式", OutputType.WARNING)
151
+
79
152
 
80
153
  def while_success(func: Callable[[], Any], sleep_time: float = 0.1) -> Any:
81
154
  """循环执行函数直到成功
@@ -95,7 +168,19 @@ def while_success(func: Callable[[], Any], sleep_time: float = 0.1) -> Any:
95
168
  time.sleep(sleep_time)
96
169
  continue
97
170
  def while_true(func: Callable[[], bool], sleep_time: float = 0.1) -> Any:
98
- """循环执行函数直到返回True"""
171
+ """循环执行函数直到返回True
172
+
173
+ 参数:
174
+ func: 要执行的函数,必须返回布尔值
175
+ sleep_time: 每次失败后的等待时间(秒)
176
+
177
+ 返回:
178
+ 函数最终返回的True值
179
+
180
+ 注意:
181
+ 与while_success不同,此函数只检查返回是否为True,
182
+ 不捕获异常,异常会直接抛出
183
+ """
99
184
  while True:
100
185
  ret = func()
101
186
  if ret:
@@ -143,6 +228,37 @@ def get_file_line_count(filename: str) -> int:
143
228
 
144
229
 
145
230
 
231
+ def _get_cmd_stats() -> Dict[str, int]:
232
+ """从数据目录获取命令调用统计"""
233
+ stats_file = Path(get_data_dir()) / "cmd_stat.yaml"
234
+ if stats_file.exists():
235
+ try:
236
+ with open(stats_file, "r", encoding="utf-8") as f:
237
+ return yaml.safe_load(f) or {}
238
+ except Exception as e:
239
+ PrettyOutput.print(
240
+ f"加载命令调用统计失败: {str(e)}", OutputType.WARNING
241
+ )
242
+ return {}
243
+
244
+ def _update_cmd_stats(cmd_name: str) -> None:
245
+ """更新命令调用统计"""
246
+ stats = _get_cmd_stats()
247
+ stats[cmd_name] = stats.get(cmd_name, 0) + 1
248
+ stats_file = Path(get_data_dir()) / "cmd_stat.yaml"
249
+ try:
250
+ with open(stats_file, "w", encoding="utf-8") as f:
251
+ yaml.safe_dump(stats, f, allow_unicode=True)
252
+ except Exception as e:
253
+ PrettyOutput.print(
254
+ f"保存命令调用统计失败: {str(e)}", OutputType.WARNING
255
+ )
256
+
257
+ def count_cmd_usage() -> None:
258
+ """统计当前命令的使用次数"""
259
+ import sys
260
+ _update_cmd_stats(sys.argv[0])
261
+
146
262
  def is_context_overflow(content: str) -> bool:
147
263
  """判断文件内容是否超出上下文限制"""
148
264
  return get_context_token_count(content) > get_max_big_content_size()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.1.178
3
+ Version: 0.1.180
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
@@ -46,16 +46,15 @@ Requires-Dist: prompt_toolkit==3.0.50
46
46
  Requires-Dist: yaspin==2.4.0
47
47
  Requires-Dist: pygments==2.19.1
48
48
  Requires-Dist: fuzzywuzzy==0.18.0
49
- Requires-Dist: jedi==0.19.2
50
49
  Requires-Dist: fastapi==0.115.12
51
50
  Requires-Dist: uvicorn==0.33.0
52
51
  Requires-Dist: rich==14.0.0
53
52
  Requires-Dist: transformers==4.46.3
54
53
  Requires-Dist: torch==2.4.1
55
54
  Requires-Dist: python-Levenshtein==0.25.1
56
- Requires-Dist: sseclient==0.0.27
57
55
  Requires-Dist: pillow==10.2.0
58
56
  Requires-Dist: openai==1.78.1
57
+ Requires-Dist: tabulate==0.9.0
59
58
  Provides-Extra: dev
60
59
  Requires-Dist: pytest; extra == "dev"
61
60
  Requires-Dist: black; extra == "dev"
@@ -78,15 +77,7 @@ Dynamic: requires-python
78
77
 
79
78
  *您的智能开发和系统交互助手*
80
79
 
81
- [核心特色](#core-features) •
82
- [视频介绍](#video-introduction) •
83
- [快速开始](#quick-start) •
84
- [配置说明](#configuration) •
85
- [工具说明](#tools) •
86
- [扩展开发](#extensions) •
87
- [贡献指南](#contributing) •
88
- [许可证](#license) •
89
- [Wiki文档](https://deepwiki.com/skyfireitdiy/Jarvis)
80
+ [核心特色](#core-features) • [视频介绍](#video-introduction) • [快速开始](#quick-start) • [配置说明](#configuration) • [工具说明](#tools) • [扩展开发](#extensions) • [贡献指南](#contributing) • [许可证](#license) • [Wiki文档](https://deepwiki.com/skyfireitdiy/Jarvis)
90
81
  </div>
91
82
 
92
83
  ---
@@ -123,15 +114,17 @@ pip3 install jarvis-ai-assistant
123
114
 
124
115
  ### 最小化配置
125
116
 
126
- #### 腾讯元宝
127
- ```bash
128
- JARVIS_PLATFORM=yuanbao
129
- JARVIS_MODEL=deep_seek_v3
130
- JARVIS_THINKING_PLATFORM=yuanbao
131
- JARVIS_THINKING_MODEL=deep_seek
117
+ 将以下配置写入到`~/.jarvis/config.yaml`文件中。
132
118
 
133
- YUANBAO_COOKIES=<元宝cookies>
134
- YUANBAO_AGENT_ID=<元宝AgentID>
119
+ #### 腾讯元宝
120
+ ```yaml
121
+ JARVIS_PLATFORM: yuanbao
122
+ JARVIS_MODEL: deep_seek_v3
123
+ JARVIS_THINKING_PLATFORM: yuanbao
124
+ JARVIS_THINKING_MODEL: deep_seek
125
+ ENV:
126
+ YUANBAO_COOKIES: <元宝cookies>
127
+ YUANBAO_AGENT_ID: <元宝AgentID>
135
128
  ```
136
129
 
137
130
  元宝cookies以及AgentID获取方式:
@@ -142,13 +135,14 @@ YUANBAO_AGENT_ID=<元宝AgentID>
142
135
 
143
136
 
144
137
  #### Kimi
145
- ```bash
146
- JARVIS_PLATFORM=kimi
147
- JARVIS_MODEL=kimi
148
- JARVIS_THINKING_PLATFORM=kimi
149
- JARVIS_THINKING_MODEL=k1
138
+ ```yaml
139
+ JARVIS_PLATFORM: kimi
140
+ JARVIS_MODEL: kimi
141
+ JARVIS_THINKING_PLATFORM: kimi
142
+ JARVIS_THINKING_MODEL: k1
150
143
 
151
- KIMI_API_KEY=<Kimi API KEY>
144
+ ENV:
145
+ KIMI_API_KEY: <Kimi API KEY>
152
146
  ```
153
147
 
154
148
  Kimi API Key获取方式:
@@ -159,21 +153,21 @@ Kimi API Key获取方式:
159
153
 
160
154
 
161
155
  #### OpenAI
162
- ```bash
163
- JARVIS_PLATFORM=openai
164
- JARVIS_MODEL=gpt-4o # 默认模型,可选gpt-4-turbo, gpt-3.5-turbo等
165
- JARVIS_THINKING_PLATFORM=openai
166
- JARVIS_THINKING_MODEL=gpt-4o
156
+ ```yaml
157
+ JARVIS_PLATFORM: openai
158
+ JARVIS_MODEL: gpt-4o # 默认模型,可选gpt-4-turbo, gpt-3.5-turbo等
159
+ JARVIS_THINKING_PLATFORM: openai
160
+ JARVIS_THINKING_MODEL: gpt-4o
167
161
 
168
- OPENAI_API_KEY=<OpenAI API Key>
169
- OPENAI_API_BASE=https://api.openai.com/v1 # 可选,默认为官方API地址
162
+ OPENAI_API_KEY: <OpenAI API Key>
163
+ OPENAI_API_BASE: https://api.openai.com/v1 # 可选,默认为官方API地址
170
164
  ```
171
165
 
172
166
  配置说明:
173
167
  1. `OPENAI_API_KEY`: 必填。
174
168
  2. `OPENAI_API_BASE`: 可选,用于自定义API端点
175
169
 
176
- 以上配置编写到`~/.jarvis/env`文件中。
170
+ 以上配置编写到`~/.jarvis/config.yaml`文件中。
177
171
 
178
172
  支持的模型可通过`jarvis-platform-manager --list-models`查看完整列表。
179
173
 
@@ -198,9 +192,10 @@ OPENAI_API_BASE=https://api.openai.com/v1 # 可选,默认为官方API地址
198
192
  ---
199
193
 
200
194
  ## ⚙️ 配置说明 <a id="configuration"></a>
201
- ### 环境变量配置
195
+ ### 配置项
202
196
  | 变量名称 | 默认值 | 说明 |
203
197
  |----------|--------|------|
198
+ | `ENV` | {} | 环境变量配置,用于设置系统环境变量 |
204
199
  | `JARVIS_MAX_TOKEN_COUNT` | 960000 | 上下文窗口的最大token数量 |
205
200
  | `JARVIS_MAX_INPUT_TOKEN_COUNT` | 32000 | 输入的最大token数量 |
206
201
  | `JARVIS_AUTO_COMPLETE` | false | 是否启用自动完成功能(任务判定完成的时候会自动终止) |
@@ -215,9 +210,22 @@ OPENAI_API_BASE=https://api.openai.com/v1 # 可选,默认为官方API地址
215
210
  | `JARVIS_AUTO_UPDATE` | true | 是否自动更新Jarvis(仅在以git仓库方式安装时有效) |
216
211
  | `JARVIS_MAX_BIG_CONTENT_SIZE` | 1024000 | 最大大内容大小 |
217
212
  | `JARVIS_PRETTY_OUTPUT` | false | 是否启用PrettyOutput |
213
+ | `JARVIS_GIT_COMMIT_PROMPT` | "" | 自定义git提交信息生成提示模板 |
214
+ | `JARVIS_PRINT_PROMPT` | false | 是否打印提示 |
215
+ | `JARVIS_USE_METHODOLOGY` | false | 是否启用方法论功能 |
216
+ | `JARVIS_USE_ANALYSIS` | false | 是否启用任务分析功能 |
217
+ | `JARVIS_DATA_PATH` | ~/.jarvis | Jarvis数据存储目录路径 |
218
218
 
219
- 所有配置编写到`~/.jarvis/env`文件中即可生效。
219
+ 所有配置编写到`~/.jarvis/config.yaml`文件中即可生效。
220
220
 
221
+ ### 配置文件格式
222
+ 配置文件仅支持YAML格式:
223
+ ```yaml
224
+ JARVIS_PLATFORM: yuanbao
225
+ JARVIS_MODEL: deep_seek_v3
226
+ ENV:
227
+ YUANBAO_COOKIES: "your_cookies_here"
228
+ ```
221
229
 
222
230
  ---
223
231
  ## 🛠️ 工具说明 <a id="tools"></a>
@@ -236,7 +244,6 @@ OPENAI_API_BASE=https://api.openai.com/v1 # 可选,默认为官方API地址
236
244
  | file_analyzer | 分析文件内容并提取关键信息。支持的文件:文本文件、word文档、pdf文件、图片 |
237
245
  | file_operation | 文件批量操作工具,可批量读写多个文件,支持文本文件,适用于需要同时处理多个文件的场景(读取配置文件、保存生成内容等) |
238
246
  | find_methodology | 方法论查找工具,用于在执行过程中查看历史方法论辅助决策 |
239
- | lsp_get_diagnostics | 获取代码诊断信息(错误、警告) |
240
247
  | methodology | 方法论管理工具,支持添加、更新和删除操作 |
241
248
  | read_code | 代码阅读与分析工具,用于读取源代码文件并添加行号,针对代码文件优化,提供更好的格式化输出和行号显示,适用于代码分析、审查和理解代码实现的场景 |
242
249
  | read_webpage | 读取网页内容并分析 |
@@ -262,15 +269,20 @@ Jarvis支持使用特殊标记`'<tag>'`来触发命令替换功能,其中`tag`
262
269
  | `'Fix'` | 修复问题 |
263
270
 
264
271
  #### 自定义替换
265
- 可以通过在`~/.jarvis/replace_map.yaml`文件中添加自定义替换规则:
272
+ 可以通过以下方式配置自定义替换规则:
273
+
274
+ **配置文件**:
275
+ 在`~/.jarvis/config.yaml`中添加`JARVIS_REPLACE_MAP`配置项:
266
276
  ```yaml
267
- tag_name:
268
- template: "替换后的内容"
269
- description: "标记描述"
270
- append: false # 可选,true表示追加到输入末尾,false表示直接替换
277
+ JARVIS_REPLACE_MAP:
278
+ tag_name:
279
+ template: "替换后的内容"
280
+ description: "标记描述"
281
+ append: false # 可选,true表示追加到输入末尾,false表示直接替换
271
282
  ```
272
283
 
273
284
 
285
+
274
286
  #### 文件路径补全
275
287
  在交互式输入中,输入`@`可以触发文件路径补全功能,支持模糊匹配。
276
288
 
@@ -330,27 +342,22 @@ class CustomTool:
330
342
 
331
343
 
332
344
  ### 添加MCP
333
- MCP(模型上下文协议)。在`~/.jarvis/tools/mcp/`中创建YAML配置文件:
345
+ MCP(模型上下文协议)支持以下配置方式:
334
346
 
335
- #### 本地MCP配置(`stdio`模式)
347
+ #### 配置文件
348
+ 在`~/.jarvis/config.yaml`中添加`JARVIS_MCP`配置项:
336
349
  ```yaml
337
- type: stdio
338
- name: MCP名称
339
- command: 可执行命令
340
- args: [参数列表] # 可选
341
- env: # 可选环境变量
342
- KEY: VALUE
350
+ JARVIS_MCP:
351
+ - type: stdio # 或 sse/streamable
352
+ name: MCP名称
353
+ command: 可执行命令 # stdio模式必填
354
+ base_url: http://example.com/api # sse/streamable模式必填
355
+ args: [参数列表] # 可选
356
+ env: # 可选环境变量
357
+ KEY: VALUE
358
+ enable: true # 可选,默认为true
343
359
  ```
344
360
 
345
- #### 远程MCP配置(`sse`模式)
346
- ```yaml
347
- type: sse
348
- name: MCP名称
349
- base_url: http://example.com/api
350
- auth_token: 认证令牌 # 可选
351
- headers: # 可选HTTP头
352
- X-Custom-Header: value
353
- ```
354
361
 
355
362
 
356
363
  ### 添加新大模型平台
@@ -0,0 +1,99 @@
1
+ jarvis/__init__.py,sha256=VWahAg7gYnoP3F-d2naYtaf7HKC8ZuoYbeBZ5SH0GnQ,74
2
+ jarvis/jarvis_agent/__init__.py,sha256=9vyME5JbA4koVoqJ_zv5N9eNdvu6iBkB4o4a1CmkVgA,30054
3
+ jarvis/jarvis_agent/builtin_input_handler.py,sha256=f4DaEHPakXcAbgykFP-tiOQP6fh_yGFlZx_h91_j2tQ,1529
4
+ jarvis/jarvis_agent/jarvis.py,sha256=UkNMVUlSNKV6y3v12eAhqc_gIDB6Obxrwk5f7-sQeiQ,6137
5
+ jarvis/jarvis_agent/main.py,sha256=GkjMTIbsd56nkVuRwD_tU_PZWyzixZZhMjVOCd0SzOA,2669
6
+ jarvis/jarvis_agent/output_handler.py,sha256=7qori-RGrQmdiFepoEe3oPPKJIvRt90l_JDmvCoa4zA,1219
7
+ jarvis/jarvis_agent/shell_input_handler.py,sha256=pi3AtPKrkKc6K9e99S1djKXQ_XrxtP6FrSWebQmRT6E,1261
8
+ jarvis/jarvis_code_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ jarvis/jarvis_code_agent/code_agent.py,sha256=jEJhPk4Eg-2hsDYeIa2NOfk2YnuvhuPrLCtVHm5hTPg,17879
10
+ jarvis/jarvis_code_agent/lint.py,sha256=TZlhNbeaoLzO9DzExjN5GAjrt66owd8lyQV56LTfkrs,4370
11
+ jarvis/jarvis_code_analysis/code_review.py,sha256=SEK5NOGDWgMNX3zmRMWrIOtq3Xr8cKt_asG51U8h6SA,30219
12
+ jarvis/jarvis_code_analysis/checklists/__init__.py,sha256=cKQ_FOGy5TQgM-YkRCqORo-mUOZaPAJ9VDmZoFX58us,78
13
+ jarvis/jarvis_code_analysis/checklists/c_cpp.py,sha256=SXPpYCNeCtU1PpKdKPiYDuOybfY9vaL0ejDn4imxDwA,1317
14
+ jarvis/jarvis_code_analysis/checklists/csharp.py,sha256=vS-cu6RCGg5SyK9MJ3RE381gt3xYl-yea3Bj2UQEcwQ,2420
15
+ jarvis/jarvis_code_analysis/checklists/data_format.py,sha256=0ljCQPNrhFq3Qzl7WQZy-5jRE5OQG-6fjK-ZMQhP7AE,3005
16
+ jarvis/jarvis_code_analysis/checklists/devops.py,sha256=caupq-mZyXOfK5cSkpgcxdivqK89_2lWuDbXDuVndI8,3542
17
+ jarvis/jarvis_code_analysis/checklists/docs.py,sha256=lOr69-3-wobyfx82NLYZmZKHfoAov_rF4D6YMjsmOkY,3341
18
+ jarvis/jarvis_code_analysis/checklists/go.py,sha256=8Q16X08aj9pyLyi5c85xB2CcZI-eLlxw7TJDTij5BBY,1388
19
+ jarvis/jarvis_code_analysis/checklists/infrastructure.py,sha256=KgyuZHJfKCbon1qxqoTDBnUbDrY7dfFnfPkTlH4BrlI,3765
20
+ jarvis/jarvis_code_analysis/checklists/java.py,sha256=RReiw64i-o5yLIhZdFkkWzMl9yE4_SnQr7CwWz5dTas,2085
21
+ jarvis/jarvis_code_analysis/checklists/javascript.py,sha256=i1srwYq0H-d9Ql98UpJSvceHe5jTJX3CFO_sgmw7_AU,2340
22
+ jarvis/jarvis_code_analysis/checklists/kotlin.py,sha256=AgVEDHdDC4kD-XYjT5V3LNjRpcWeVCoPThVg1juD1Ns,4436
23
+ jarvis/jarvis_code_analysis/checklists/loader.py,sha256=N9tSH4R_HYS5280CQoEcGJSGFq0WbAbYYQNQsKQTCDI,2102
24
+ jarvis/jarvis_code_analysis/checklists/php.py,sha256=_EvpnWwHOGM3wAc9aXJrtwy3LQvYNR-oxPhtv71qZj4,2481
25
+ jarvis/jarvis_code_analysis/checklists/python.py,sha256=rQ2jpDG0CPzeWiBc2Q6kJA0IBpyheL4-gtMwe6whgOM,1452
26
+ jarvis/jarvis_code_analysis/checklists/ruby.py,sha256=JbU1eHafIhlV0qWtYxEltz6AaFzUSU_F3KuqylnMcgc,4274
27
+ jarvis/jarvis_code_analysis/checklists/rust.py,sha256=oe_1wPaBgMScQTn-697aghWVsIvNO2v8E6m_lcP8_iU,1646
28
+ jarvis/jarvis_code_analysis/checklists/shell.py,sha256=IXQkWHwA-4GUQz3WUs7l6hEy7Vrjd92egUYXGfu2FKQ,2619
29
+ jarvis/jarvis_code_analysis/checklists/sql.py,sha256=ecKKT6wJAibn8R0NxGZDNlm4teYXvF3CAJvVk8mmX7w,2355
30
+ jarvis/jarvis_code_analysis/checklists/swift.py,sha256=YcsYFxAitHqOtBZjG-RV9-KNM7X5lIcl6zlEI9XfmfM,2566
31
+ jarvis/jarvis_code_analysis/checklists/web.py,sha256=-Pnj1FQTsGVZUQK7-4ptDsGd7a22Cs0585jRAPT2SdQ,3943
32
+ jarvis/jarvis_data/config_schema.json,sha256=jAoVYIB4mBf6TEwpnsPCLIwsYmpwLyH_dAPB6-S6R6s,6853
33
+ jarvis/jarvis_data/huggingface.tar.gz,sha256=dWKnc_tvyx-I_ZkXo91O0b38KxDmLW1ZbmJ3E6fCl_k,1120205
34
+ jarvis/jarvis_dev/main.py,sha256=RJ7Z7_qX6ENKrlgjlz7tMfpBTh9g22mGqcasWCv5ygw,42710
35
+ jarvis/jarvis_event/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
+ jarvis/jarvis_git_details/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
+ jarvis/jarvis_git_details/main.py,sha256=MfR7feVVQ7Eo9eZk-wO2bFypnA6uRrYUQn6iTeoF0Os,9007
38
+ jarvis/jarvis_git_squash/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
+ jarvis/jarvis_git_squash/main.py,sha256=q8-r0TtVOaCqY_uYwnWAY76k8YCDd5se_feB6ZWKo9M,2278
40
+ jarvis/jarvis_git_utils/git_commiter.py,sha256=RMI1VunK643CS6vL5ZD3ehXr4LbhPKRspzagV8AcPIY,12984
41
+ jarvis/jarvis_mcp/__init__.py,sha256=NF_vqRxaNyz8ColcpRh0bOkinV90YLAKHEN--jkP-B8,2114
42
+ jarvis/jarvis_mcp/sse_mcp_client.py,sha256=QNA7HqFvLbvhNaFp3ZsXzs2Rm6_gHUMcpd4t4qAzymY,23485
43
+ jarvis/jarvis_mcp/stdio_mcp_client.py,sha256=IEkas4ojP5J0TdVaUglvlEp61RyezBtuejv4lN3n1I4,11831
44
+ jarvis/jarvis_mcp/streamable_mcp_client.py,sha256=t2uKiIbKlmMsaiN9xHCZC3WTdl7mmoBuIZ_ph-QshzE,15084
45
+ jarvis/jarvis_methodology/main.py,sha256=HhEArlKI5PCpGnBCwVrXMuDn2z84LgpgK7-aGSQH0v4,11880
46
+ jarvis/jarvis_multi_agent/__init__.py,sha256=Xab5sFltJmX_9MoXqanmZs6FqKfUb2v_pG29Vk8ZXaw,4311
47
+ jarvis/jarvis_multi_agent/main.py,sha256=KeGv8sdpSgTjW6VE4-tQ8BWDC_a0aE_4R3OqzPBd5N4,1646
48
+ jarvis/jarvis_platform/__init__.py,sha256=0YnsUoM4JkIBOtImFdjfuDbrqQZT3dEaAwSJ62DrpCc,104
49
+ jarvis/jarvis_platform/base.py,sha256=EyZOl98rpYUX1yISDFvj1ztrYfWIT2ozenwUIZ7TyyI,6972
50
+ jarvis/jarvis_platform/human.py,sha256=xwaTZ1zdrAYZZFXxkbHvUdECwCGsic0kgAFUncUr45g,2567
51
+ jarvis/jarvis_platform/kimi.py,sha256=k0dYwuRf-snmJF206D7inahUcZUZG0VqOmhphj09NzQ,11969
52
+ jarvis/jarvis_platform/openai.py,sha256=VyX3bR1rGxrJdWOtUBf8PgSL9n06KaNbOewL1urzOnk,4741
53
+ jarvis/jarvis_platform/registry.py,sha256=CxAELjDrc-KKPPKdP71E_qaFisfQztvwc_tdf3WpOt8,7863
54
+ jarvis/jarvis_platform/yuanbao.py,sha256=EABz4qLg_LJfbRfWn_8e_sEUZpD68IT98ax1q4pgaTg,20343
55
+ jarvis/jarvis_platform_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
+ jarvis/jarvis_platform_manager/main.py,sha256=OXWj18SqiV0Gl75YT6D9wspCCB4Nes04EY-ShI9kbpU,25677
57
+ jarvis/jarvis_smart_shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
+ jarvis/jarvis_smart_shell/main.py,sha256=k59o5UD7merbsPhJQzae95ThTmZY2EcNHB3Ov6kb0PA,5291
59
+ jarvis/jarvis_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
+ jarvis/jarvis_tools/ask_codebase.py,sha256=FYlrbiN5PjxS4hGvCjN8idF6YnESDH6NLBgQguSnG48,10145
61
+ jarvis/jarvis_tools/ask_user.py,sha256=qwxwJIL698rEWdi1txxlPgIr4UFuihfe--NqBEYhIQQ,2168
62
+ jarvis/jarvis_tools/base.py,sha256=OdlvzUjYQBmZIMcAeBxAqIQo2urh126OerArK-wOPzU,1191
63
+ jarvis/jarvis_tools/chdir.py,sha256=DNKVFrWqu6t_sZ2ipv99s6802QR4cSGlqKlmaI--arE,2707
64
+ jarvis/jarvis_tools/code_plan.py,sha256=pfGOX3fH4-Gg2ECuJkjGpnRtHXEhlVWLV8ZVJAEKmwk,7755
65
+ jarvis/jarvis_tools/create_code_agent.py,sha256=-nHfo5O5pDIG5IX3w1ClQafGvGcdI2_w75-KGrD-gUQ,3458
66
+ jarvis/jarvis_tools/create_sub_agent.py,sha256=lyFrrg4V0yXULmU3vldwGp_euZjwZzJcRU6mJ20zejY,3023
67
+ jarvis/jarvis_tools/edit_file.py,sha256=OiTP50yaUE-WTSKnp8axo96OfddHufWKpGuEa6YRG30,16269
68
+ jarvis/jarvis_tools/execute_script.py,sha256=yQpc90t678UGbkr-ycGeB7jwqmY7GWWbtFtmcAI0-d4,5739
69
+ jarvis/jarvis_tools/file_analyzer.py,sha256=7ILHkUFm8pPZn1y_s4uT0kaWHP-EmlHnpkovDdA1yRE,4872
70
+ jarvis/jarvis_tools/file_operation.py,sha256=RcOKuMFUv01tvKoiOfu1ERCjvDVfJBvkT4oBpq-8vNQ,9036
71
+ jarvis/jarvis_tools/find_methodology.py,sha256=P1IJU2x9yBoOK-X5TTvzC9Lfa1i6ES3eZn5kjEpWGdA,2440
72
+ jarvis/jarvis_tools/generate_new_tool.py,sha256=k1Vt88kI1bYi1OwxvJqFKr3Ewwwv7lOegYNmZ-1F7x0,10283
73
+ jarvis/jarvis_tools/methodology.py,sha256=m7cQmVhhQpUUl_uYTVvcW0JBovQLx5pWTXh_8K77HsU,5237
74
+ jarvis/jarvis_tools/read_code.py,sha256=j4niDMOAKW_3rVxmOo3wxYBQ2T8vkxqEiTkBt28gUT8,5898
75
+ jarvis/jarvis_tools/read_webpage.py,sha256=PFAYuKjay9j6phWzyuZ99ZfNaHJljmRWAgS0bsvbcvE,2219
76
+ jarvis/jarvis_tools/registry.py,sha256=WvYPiaUrleFqeXvwRkxM-6TNs1sWm61mpg1MFVo_kas,25113
77
+ jarvis/jarvis_tools/rewrite_file.py,sha256=3V2l7kG5DG9iRimBce-1qCRuJPL0QM32SBTzOl2zCqM,7004
78
+ jarvis/jarvis_tools/search_web.py,sha256=rzxrCOTEo-MmLQrKI4k-AbfidUfJUeCPK4f5ZJy48G8,952
79
+ jarvis/jarvis_tools/virtual_tty.py,sha256=8E_n-eC-RRPTqYx6BI5Q2RnorY8dbhKFBfAjIiRQROA,16397
80
+ jarvis/jarvis_tools/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
+ jarvis/jarvis_tools/cli/main.py,sha256=3UuU9tk5cQAS0rfNPXgdtnAd5uDB7v0Exo0_I9sJHRE,6355
82
+ jarvis/jarvis_utils/__init__.py,sha256=x5lbQRH1uOulmWr1IEqNMLXNmDHbqQQot7d1uhKFg4M,851
83
+ jarvis/jarvis_utils/builtin_replace_map.py,sha256=Cx0HFvMmDkkYR9htSS-PCCd8D0Np7yRm2g-C1J2-u08,4314
84
+ jarvis/jarvis_utils/config.py,sha256=3m6v3ALWfnZ9yeMEIEDUFFyYuG6h2r8fEMv2yJAad_M,7139
85
+ jarvis/jarvis_utils/embedding.py,sha256=J8YAqIEj16TJIPEG24uvUlPHeN-5zq0JW_hbNLizQug,3832
86
+ jarvis/jarvis_utils/file_processors.py,sha256=G5kQI7vCGIDnjgAB5J1dYIR102u6WUv3IhcWFfDh_gs,2977
87
+ jarvis/jarvis_utils/git_utils.py,sha256=WuVSoqSSrjqO4t3XAiG7SpmH9GduS8YVcfFnuLI_0ik,13172
88
+ jarvis/jarvis_utils/globals.py,sha256=6JWtB1XoD-wEFiMzZNA790ixlZ_OsJEYUM_B8EwkOE8,2277
89
+ jarvis/jarvis_utils/input.py,sha256=FkLW7MXL8awQUghFLQnW1r5F1wV8K3EZeVPwHFRHJTo,7458
90
+ jarvis/jarvis_utils/methodology.py,sha256=A8pE8ZqNHvGKaDO4TFtg7Oz-hAXPBcQfhmSPWMr6vdg,8629
91
+ jarvis/jarvis_utils/output.py,sha256=QboL42GtG_dnvd1O64sl8o72mEBhXNRADPXQMXgDE7Q,9661
92
+ jarvis/jarvis_utils/tag.py,sha256=YJHmuedLb7_AiqvKQetHr4R1FxyzIh7HN0RRkWMmYbU,429
93
+ jarvis/jarvis_utils/utils.py,sha256=ZwGMbHBQhPckq76W5v-Wbnoapy4vKX3QnvkPLesaHO0,9738
94
+ jarvis_ai_assistant-0.1.180.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
95
+ jarvis_ai_assistant-0.1.180.dist-info/METADATA,sha256=hzV9sCqPJ3zunaI4KStiGReTpgBtM3xAKArTm-Cxacw,15291
96
+ jarvis_ai_assistant-0.1.180.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
97
+ jarvis_ai_assistant-0.1.180.dist-info/entry_points.txt,sha256=rjj61tZ7ahLi1R-JkJmX-IzIPPHD8mnwDZap1CnMe2s,973
98
+ jarvis_ai_assistant-0.1.180.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
99
+ jarvis_ai_assistant-0.1.180.dist-info/RECORD,,
@@ -1,96 +0,0 @@
1
- jarvis/__init__.py,sha256=kLQzda4dAK6qGRaBAGgx8rj1Q_kKFSU7nENMKSCFnzk,74
2
- jarvis/jarvis_agent/__init__.py,sha256=Mmk69MP64n6XLmWoFbTBVs4DUZBnSiAKKEQF1P9CcpU,29201
3
- jarvis/jarvis_agent/builtin_input_handler.py,sha256=KhvlV_QdB3P-M0TCkWvdxidNie1jU7KoMOqTIXCpwwA,1529
4
- jarvis/jarvis_agent/jarvis.py,sha256=h3-FsL9Y4GtbNPk6qWYs2t6VB8CKabY7_UNe58tzucE,6142
5
- jarvis/jarvis_agent/main.py,sha256=jvxnBmm4BM13quaCip2PC1-DkAX0MAU25b8nhHIQ5xM,2667
6
- jarvis/jarvis_agent/output_handler.py,sha256=7qori-RGrQmdiFepoEe3oPPKJIvRt90l_JDmvCoa4zA,1219
7
- jarvis/jarvis_agent/shell_input_handler.py,sha256=pi3AtPKrkKc6K9e99S1djKXQ_XrxtP6FrSWebQmRT6E,1261
8
- jarvis/jarvis_code_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- jarvis/jarvis_code_agent/code_agent.py,sha256=9SBMlLWNGR6lqVD7xZaLjokka-yoNGb-OxpHtJjCf_k,17166
10
- jarvis/jarvis_code_analysis/code_review.py,sha256=9zfVY_u_WSRIKQ69lXeW-pOunh5lYYyQe9i_zEO3m2k,30212
11
- jarvis/jarvis_code_analysis/checklists/__init__.py,sha256=cKQ_FOGy5TQgM-YkRCqORo-mUOZaPAJ9VDmZoFX58us,78
12
- jarvis/jarvis_code_analysis/checklists/c_cpp.py,sha256=SXPpYCNeCtU1PpKdKPiYDuOybfY9vaL0ejDn4imxDwA,1317
13
- jarvis/jarvis_code_analysis/checklists/csharp.py,sha256=vS-cu6RCGg5SyK9MJ3RE381gt3xYl-yea3Bj2UQEcwQ,2420
14
- jarvis/jarvis_code_analysis/checklists/data_format.py,sha256=0ljCQPNrhFq3Qzl7WQZy-5jRE5OQG-6fjK-ZMQhP7AE,3005
15
- jarvis/jarvis_code_analysis/checklists/devops.py,sha256=caupq-mZyXOfK5cSkpgcxdivqK89_2lWuDbXDuVndI8,3542
16
- jarvis/jarvis_code_analysis/checklists/docs.py,sha256=lOr69-3-wobyfx82NLYZmZKHfoAov_rF4D6YMjsmOkY,3341
17
- jarvis/jarvis_code_analysis/checklists/go.py,sha256=8Q16X08aj9pyLyi5c85xB2CcZI-eLlxw7TJDTij5BBY,1388
18
- jarvis/jarvis_code_analysis/checklists/infrastructure.py,sha256=KgyuZHJfKCbon1qxqoTDBnUbDrY7dfFnfPkTlH4BrlI,3765
19
- jarvis/jarvis_code_analysis/checklists/java.py,sha256=RReiw64i-o5yLIhZdFkkWzMl9yE4_SnQr7CwWz5dTas,2085
20
- jarvis/jarvis_code_analysis/checklists/javascript.py,sha256=i1srwYq0H-d9Ql98UpJSvceHe5jTJX3CFO_sgmw7_AU,2340
21
- jarvis/jarvis_code_analysis/checklists/kotlin.py,sha256=AgVEDHdDC4kD-XYjT5V3LNjRpcWeVCoPThVg1juD1Ns,4436
22
- jarvis/jarvis_code_analysis/checklists/loader.py,sha256=_jK2H21P5AWDDPrSqnWveE3pOygaqgfaP3Gw7xhSKfQ,1919
23
- jarvis/jarvis_code_analysis/checklists/php.py,sha256=_EvpnWwHOGM3wAc9aXJrtwy3LQvYNR-oxPhtv71qZj4,2481
24
- jarvis/jarvis_code_analysis/checklists/python.py,sha256=rQ2jpDG0CPzeWiBc2Q6kJA0IBpyheL4-gtMwe6whgOM,1452
25
- jarvis/jarvis_code_analysis/checklists/ruby.py,sha256=JbU1eHafIhlV0qWtYxEltz6AaFzUSU_F3KuqylnMcgc,4274
26
- jarvis/jarvis_code_analysis/checklists/rust.py,sha256=oe_1wPaBgMScQTn-697aghWVsIvNO2v8E6m_lcP8_iU,1646
27
- jarvis/jarvis_code_analysis/checklists/shell.py,sha256=IXQkWHwA-4GUQz3WUs7l6hEy7Vrjd92egUYXGfu2FKQ,2619
28
- jarvis/jarvis_code_analysis/checklists/sql.py,sha256=ecKKT6wJAibn8R0NxGZDNlm4teYXvF3CAJvVk8mmX7w,2355
29
- jarvis/jarvis_code_analysis/checklists/swift.py,sha256=YcsYFxAitHqOtBZjG-RV9-KNM7X5lIcl6zlEI9XfmfM,2566
30
- jarvis/jarvis_code_analysis/checklists/web.py,sha256=-Pnj1FQTsGVZUQK7-4ptDsGd7a22Cs0585jRAPT2SdQ,3943
31
- jarvis/jarvis_data/huggingface.tar.gz,sha256=dWKnc_tvyx-I_ZkXo91O0b38KxDmLW1ZbmJ3E6fCl_k,1120205
32
- jarvis/jarvis_dev/main.py,sha256=kyCLm2Ta-iMK20m62O7_rB-Biy_bGxpqrLrLtMOkT5c,43022
33
- jarvis/jarvis_event/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
- jarvis/jarvis_git_details/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
- jarvis/jarvis_git_details/main.py,sha256=lYx2tSaV1cKCvs3iRf-gHwotg-sljvxC4iPeODpBnbA,9007
36
- jarvis/jarvis_git_squash/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
- jarvis/jarvis_git_squash/main.py,sha256=nGygczZlRbczKAU8LEFLHQVjpgCkbGx7GQQcwo57cSo,2276
38
- jarvis/jarvis_git_utils/git_commiter.py,sha256=58ZhxwDdYzMH9-uvVe2dazQfq8uNcZTJQq7SMJEFsic,13020
39
- jarvis/jarvis_mcp/__init__.py,sha256=NF_vqRxaNyz8ColcpRh0bOkinV90YLAKHEN--jkP-B8,2114
40
- jarvis/jarvis_mcp/sse_mcp_client.py,sha256=FOVzroTw-pifmnF0qdsoQ6KweDCQ0Gxs6d6jl4VopiQ,23483
41
- jarvis/jarvis_mcp/stdio_mcp_client.py,sha256=KO0ewJuLBZLNqG4EGJcBOtn-8VJIipkq84ENvSwgQAo,11830
42
- jarvis/jarvis_methodology/main.py,sha256=QJUMIb9o8JO-l207X5UIbazZKJYKG3F4iuUKtkm0dmg,11840
43
- jarvis/jarvis_multi_agent/__init__.py,sha256=Xab5sFltJmX_9MoXqanmZs6FqKfUb2v_pG29Vk8ZXaw,4311
44
- jarvis/jarvis_multi_agent/main.py,sha256=Ax3Oe0mjcW567VhFYPt3H5MwqLS1VdxKCeiNgXltmXk,1644
45
- jarvis/jarvis_platform/__init__.py,sha256=0YnsUoM4JkIBOtImFdjfuDbrqQZT3dEaAwSJ62DrpCc,104
46
- jarvis/jarvis_platform/base.py,sha256=ioIEtuEVuXCdLpPofR9c-lqvADM-pCz5XOMQVKq8xeI,6740
47
- jarvis/jarvis_platform/human.py,sha256=1Jh9xigQaU78WVvsIMaVH0i6QRhaSA1oaErv9BdntF8,2565
48
- jarvis/jarvis_platform/kimi.py,sha256=p18Ydb_0rgnK3-WZXKUtTBQTh7Da33O277PKWOMqBhA,13106
49
- jarvis/jarvis_platform/openai.py,sha256=NIoquWLf0_kCqPk-y6wGq30RwJPojaS3MwC7sL7UPL8,5585
50
- jarvis/jarvis_platform/registry.py,sha256=UjCdPT9WIRxU-F0uuPpKmKRRCcNNxjr-bRTEPgRSNx4,7740
51
- jarvis/jarvis_platform/yuanbao.py,sha256=Vi8D3lhTOwg2-PmMj7HHRXKg-dViI2ghtJcxm3tf8nc,21669
52
- jarvis/jarvis_platform_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
- jarvis/jarvis_platform_manager/main.py,sha256=cpnqYWjb2fU2uhrTtYyyrKpe6rta2NniYjZE6BjLG8k,25675
54
- jarvis/jarvis_smart_shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
- jarvis/jarvis_smart_shell/main.py,sha256=v3DXutU-lBYABxB1tURHPcdTJuoT3gthdXl8O5tOGJw,5208
56
- jarvis/jarvis_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
- jarvis/jarvis_tools/ask_codebase.py,sha256=HOEx_e7Po0tnKCTX5ZgzARxwYO_6e6ZNJacjMDQb-zw,10144
58
- jarvis/jarvis_tools/ask_user.py,sha256=cWSLG33b79IbIZEWsSNV5RHvGX6eo3nTM8TUhOMnGh8,2167
59
- jarvis/jarvis_tools/base.py,sha256=SR4dmrgYj3lNmtVDhHtItPvptTqCfw5SGRhgPT3I6ss,1189
60
- jarvis/jarvis_tools/chdir.py,sha256=wYVBqWF5kaUkKqH3cUAOKUsACzYsFtCCJJyd8UJsp4o,2706
61
- jarvis/jarvis_tools/code_plan.py,sha256=EzLdbJnVCkJ7lL8XIQyuDJdxU1i3CFiBpqyNG-GdJw8,7753
62
- jarvis/jarvis_tools/create_code_agent.py,sha256=cxYkjr4rhI2EWpK78psZSRB9mxiP1IUT0SEfFIqCJzY,3411
63
- jarvis/jarvis_tools/create_sub_agent.py,sha256=ppTOFRd0ygSJUFr3oQ8IrCLOqbZ7vwnbdadfTDjpDgs,3025
64
- jarvis/jarvis_tools/edit_file.py,sha256=zwRRfO17VeyZn1b1p7223LJX_nYvBzsjUbfbzNgn4Lk,16266
65
- jarvis/jarvis_tools/execute_script.py,sha256=cc0NlPwhkZinEexqT63d1ofEkzQddVWGsZOCVL1v_60,5739
66
- jarvis/jarvis_tools/file_analyzer.py,sha256=tzU1cPKyDa54hVZewP0bDzdsjvdjGQ1BRt5k8N4li3s,4868
67
- jarvis/jarvis_tools/file_operation.py,sha256=lP8EpsnSdA3FW8ofSAdoA8qPGMAG3UhYd6LFEzOFUVY,9044
68
- jarvis/jarvis_tools/find_methodology.py,sha256=FwGKSV4fHNkiAnaVUwP8GkqXl8PEqMPZBxAyvTSPFGA,2438
69
- jarvis/jarvis_tools/generate_new_tool.py,sha256=ctpkHBihsHhO6sLpF5lJue244EFJtdEQMuxR-_oV9r4,10282
70
- jarvis/jarvis_tools/methodology.py,sha256=Md8W2et0xUiuTjUSRCdnlwEPYqah2dCAAkxW_95BXBY,5238
71
- jarvis/jarvis_tools/read_code.py,sha256=dOG7bafutOhjLiU7NH-o7E_o6pJrXH98SAGRJ36Yj9Q,5897
72
- jarvis/jarvis_tools/read_webpage.py,sha256=LLvAOvaQJodaeNJKQ6dU9MYEE227NMdHyLs7esluUQ4,2217
73
- jarvis/jarvis_tools/registry.py,sha256=nza8W0S0UBKt18SO1Y8UH1R0PhAzN3T4WLp0evFhjmk,23819
74
- jarvis/jarvis_tools/rewrite_file.py,sha256=rEPPSNU7uF1iKfEW9npEpZJ2LSoQXjt2OC-_troBToE,7003
75
- jarvis/jarvis_tools/search_web.py,sha256=-h1WYOqTcYC_8fdkm-4RfwKpbtLTVxOfRROul51NgO0,951
76
- jarvis/jarvis_tools/virtual_tty.py,sha256=AKAaKY5KcPxifNQoXjzHaL4U6EUVA7irHLwVvz2wLVs,16396
77
- jarvis/jarvis_tools/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
- jarvis/jarvis_tools/cli/main.py,sha256=FkBUh7TgvZu6CZfQAKdu0zYm27fSfA6OK4H_m8h_4Mw,6354
79
- jarvis/jarvis_utils/__init__.py,sha256=l-fsyQ-KzyqAhrJYur8eZAqsgaifGzSm24R2qtRGJ0g,849
80
- jarvis/jarvis_utils/builtin_replace_map.py,sha256=A-cJ8deht2vDl2iKRhoZ7qECyJ6sboVH5Zx-L9vIBUs,4314
81
- jarvis/jarvis_utils/config.py,sha256=WXjBopB9K4V1Y4oRT-wKoDnHAMMknWieS6j7galr9Uc,4987
82
- jarvis/jarvis_utils/embedding.py,sha256=s7ze8-talEED9VXZm1QK5tPdfyj6sXJLP031tDkXeI4,3831
83
- jarvis/jarvis_utils/file_processors.py,sha256=tSZSMJ4qCJ_lXI0dyLgJ0j5qEh6CDXDSVI7vQiFmcuQ,2976
84
- jarvis/jarvis_utils/git_utils.py,sha256=MxhUcQ_gFUFyBxBiorEJ1wUk9a2TerFdq3-Z11FB-AE,11324
85
- jarvis/jarvis_utils/globals.py,sha256=Zs0chxA_giYiolYvawFFpcnTWgCUnn6GEusAh42jbz8,2275
86
- jarvis/jarvis_utils/input.py,sha256=qGf2q-yWhgT-OX-j_WYi7aZ11jYmuFNiMz2_W1nUOiM,7432
87
- jarvis/jarvis_utils/methodology.py,sha256=9dmtj6Ei2CRUdQP9TA_xToqZPYcm5_DQovwnRkEShsA,8626
88
- jarvis/jarvis_utils/output.py,sha256=jrZMPl4RGaw8i-IFN4JwkH3wB9QDl002Car5eENDE9c,9657
89
- jarvis/jarvis_utils/tag.py,sha256=YJHmuedLb7_AiqvKQetHr4R1FxyzIh7HN0RRkWMmYbU,429
90
- jarvis/jarvis_utils/utils.py,sha256=yXSSQwgwho3MpQWvJN1uRvRPsFvkKqhvQrbDz3ZyyxU,5390
91
- jarvis_ai_assistant-0.1.178.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
92
- jarvis_ai_assistant-0.1.178.dist-info/METADATA,sha256=GbQKDI_cLEPQef7UGEZriP5xuv1JxnsY7OMDge1BGTY,14629
93
- jarvis_ai_assistant-0.1.178.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
94
- jarvis_ai_assistant-0.1.178.dist-info/entry_points.txt,sha256=rjj61tZ7ahLi1R-JkJmX-IzIPPHD8mnwDZap1CnMe2s,973
95
- jarvis_ai_assistant-0.1.178.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
96
- jarvis_ai_assistant-0.1.178.dist-info/RECORD,,