jarvis-ai-assistant 0.3.25__py3-none-any.whl → 0.3.27__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 +290 -169
- jarvis/jarvis_agent/config.py +92 -0
- jarvis/jarvis_agent/event_bus.py +48 -0
- jarvis/jarvis_agent/jarvis.py +69 -35
- jarvis/jarvis_agent/memory_manager.py +70 -2
- jarvis/jarvis_agent/prompt_manager.py +82 -0
- jarvis/jarvis_agent/run_loop.py +130 -0
- jarvis/jarvis_agent/task_analyzer.py +88 -9
- jarvis/jarvis_agent/task_manager.py +26 -0
- jarvis/jarvis_agent/user_interaction.py +42 -0
- jarvis/jarvis_code_agent/code_agent.py +18 -3
- jarvis/jarvis_code_agent/lint.py +5 -5
- jarvis/jarvis_data/config_schema.json +7 -6
- jarvis/jarvis_git_squash/main.py +6 -1
- jarvis/jarvis_git_utils/git_commiter.py +38 -12
- jarvis/jarvis_platform/base.py +4 -5
- jarvis/jarvis_platform_manager/main.py +28 -11
- jarvis/jarvis_rag/cli.py +5 -9
- jarvis/jarvis_stats/cli.py +13 -32
- jarvis/jarvis_stats/stats.py +179 -51
- jarvis/jarvis_tools/registry.py +15 -0
- jarvis/jarvis_tools/sub_agent.py +94 -84
- jarvis/jarvis_tools/sub_code_agent.py +12 -6
- jarvis/jarvis_utils/config.py +14 -0
- jarvis/jarvis_utils/fzf.py +56 -0
- jarvis/jarvis_utils/git_utils.py +3 -8
- jarvis/jarvis_utils/input.py +0 -3
- jarvis/jarvis_utils/utils.py +96 -16
- {jarvis_ai_assistant-0.3.25.dist-info → jarvis_ai_assistant-0.3.27.dist-info}/METADATA +2 -3
- {jarvis_ai_assistant-0.3.25.dist-info → jarvis_ai_assistant-0.3.27.dist-info}/RECORD +35 -29
- {jarvis_ai_assistant-0.3.25.dist-info → jarvis_ai_assistant-0.3.27.dist-info}/WHEEL +0 -0
- {jarvis_ai_assistant-0.3.25.dist-info → jarvis_ai_assistant-0.3.27.dist-info}/entry_points.txt +0 -0
- {jarvis_ai_assistant-0.3.25.dist-info → jarvis_ai_assistant-0.3.27.dist-info}/licenses/LICENSE +0 -0
- {jarvis_ai_assistant-0.3.25.dist-info → jarvis_ai_assistant-0.3.27.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,56 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
"""FZF selector utility."""
|
3
|
+
import shutil
|
4
|
+
import subprocess
|
5
|
+
from typing import List, Optional, Union
|
6
|
+
|
7
|
+
def fzf_select(
|
8
|
+
options: Union[List[str], List[dict]],
|
9
|
+
prompt: str = "SELECT> ",
|
10
|
+
key: Optional[str] = None,
|
11
|
+
) -> Optional[str]:
|
12
|
+
"""
|
13
|
+
Uses fzf to select an item from a list.
|
14
|
+
|
15
|
+
Args:
|
16
|
+
options: A list of strings or dicts to choose from.
|
17
|
+
prompt: The prompt to display in fzf.
|
18
|
+
key: If options is a list of dicts, this is the key to display.
|
19
|
+
|
20
|
+
Returns:
|
21
|
+
The selected item, or None if fzf is not available or the selection is cancelled.
|
22
|
+
"""
|
23
|
+
if shutil.which("fzf") is None:
|
24
|
+
return None
|
25
|
+
|
26
|
+
if not options:
|
27
|
+
return None
|
28
|
+
|
29
|
+
if isinstance(options[0], dict):
|
30
|
+
if key is None:
|
31
|
+
raise ValueError("A key must be provided for a list of dicts.")
|
32
|
+
input_lines = [str(item.get(key, "")) for item in options]
|
33
|
+
else:
|
34
|
+
input_lines = [str(item) for item in options]
|
35
|
+
|
36
|
+
try:
|
37
|
+
process = subprocess.run(
|
38
|
+
[
|
39
|
+
"fzf",
|
40
|
+
"--prompt",
|
41
|
+
prompt,
|
42
|
+
"--height",
|
43
|
+
"40%",
|
44
|
+
"--border",
|
45
|
+
"--layout=reverse",
|
46
|
+
],
|
47
|
+
input="\n".join(input_lines),
|
48
|
+
stdout=subprocess.PIPE,
|
49
|
+
stderr=subprocess.PIPE,
|
50
|
+
text=True,
|
51
|
+
check=True,
|
52
|
+
)
|
53
|
+
selected = process.stdout.strip()
|
54
|
+
return selected if selected else None
|
55
|
+
except (subprocess.CalledProcessError, FileNotFoundError):
|
56
|
+
return None
|
jarvis/jarvis_utils/git_utils.py
CHANGED
@@ -19,6 +19,7 @@ from typing import Any, Dict, List, Set, Tuple
|
|
19
19
|
from jarvis.jarvis_utils.config import get_data_dir, is_confirm_before_apply_patch
|
20
20
|
from jarvis.jarvis_utils.output import OutputType, PrettyOutput
|
21
21
|
from jarvis.jarvis_utils.input import user_confirm
|
22
|
+
from jarvis.jarvis_utils.utils import is_rag_installed
|
22
23
|
|
23
24
|
|
24
25
|
def find_git_root_and_cd(start_dir: str = ".") -> str:
|
@@ -427,14 +428,8 @@ def check_and_update_git_repo(repo_path: str) -> bool:
|
|
427
428
|
is_uv_env = True
|
428
429
|
|
429
430
|
# 根据环境选择安装命令
|
430
|
-
# 检测是否安装了 RAG
|
431
|
-
rag_installed =
|
432
|
-
try:
|
433
|
-
import langchain # noqa
|
434
|
-
|
435
|
-
rag_installed = True
|
436
|
-
except ImportError:
|
437
|
-
pass
|
431
|
+
# 检测是否安装了 RAG 特性(更精确)
|
432
|
+
rag_installed = is_rag_installed()
|
438
433
|
|
439
434
|
# 根据环境和 RAG 特性选择安装命令
|
440
435
|
if rag_installed:
|
jarvis/jarvis_utils/input.py
CHANGED
@@ -605,9 +605,6 @@ def _get_multiline_input_internal(
|
|
605
605
|
("class:bt.key", "Ctrl+O"),
|
606
606
|
("class:bt.label", " 历史复制 "),
|
607
607
|
("class:bt.sep", " • "),
|
608
|
-
("class:bt.key", "@"),
|
609
|
-
("class:bt.label", " FZF文件 "),
|
610
|
-
("class:bt.sep", " • "),
|
611
608
|
("class:bt.key", "Ctrl+T"),
|
612
609
|
("class:bt.label", " 终端(!SHELL) "),
|
613
610
|
("class:bt.sep", " • "),
|
jarvis/jarvis_utils/utils.py
CHANGED
@@ -65,6 +65,41 @@ COMMAND_MAPPING = {
|
|
65
65
|
"jmo": "jarvis-memory-organizer",
|
66
66
|
}
|
67
67
|
|
68
|
+
# RAG 依赖检测工具函数(更精确)
|
69
|
+
_RAG_REQUIRED_MODULES = [
|
70
|
+
"langchain",
|
71
|
+
"langchain_community",
|
72
|
+
"chromadb",
|
73
|
+
"sentence_transformers",
|
74
|
+
"rank_bm25",
|
75
|
+
"unstructured",
|
76
|
+
]
|
77
|
+
_RAG_OPTIONAL_MODULES = [
|
78
|
+
"langchain_huggingface",
|
79
|
+
]
|
80
|
+
|
81
|
+
|
82
|
+
def get_missing_rag_modules() -> List[str]:
|
83
|
+
"""
|
84
|
+
返回缺失的 RAG 关键依赖模块列表。
|
85
|
+
仅检查必要模块,不导入模块,避免副作用。
|
86
|
+
"""
|
87
|
+
try:
|
88
|
+
from importlib.util import find_spec
|
89
|
+
|
90
|
+
missing = [m for m in _RAG_REQUIRED_MODULES if find_spec(m) is None]
|
91
|
+
return missing
|
92
|
+
except Exception:
|
93
|
+
# 任何异常都视为无法确认,保持保守策略
|
94
|
+
return _RAG_REQUIRED_MODULES[:] # 视为全部缺失
|
95
|
+
|
96
|
+
|
97
|
+
def is_rag_installed() -> bool:
|
98
|
+
"""
|
99
|
+
更准确的 RAG 安装检测:确认关键依赖模块均可用。
|
100
|
+
"""
|
101
|
+
return len(get_missing_rag_modules()) == 0
|
102
|
+
|
68
103
|
|
69
104
|
def _setup_signal_handler() -> None:
|
70
105
|
"""设置SIGINT信号处理函数"""
|
@@ -139,14 +174,11 @@ def _check_pip_updates() -> bool:
|
|
139
174
|
if uv_path.exists():
|
140
175
|
is_uv_env = True
|
141
176
|
|
142
|
-
# 检测是否安装了 RAG
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
rag_installed = True
|
148
|
-
except ImportError:
|
149
|
-
pass
|
177
|
+
# 检测是否安装了 RAG 特性(更精确)
|
178
|
+
from jarvis.jarvis_utils.utils import (
|
179
|
+
is_rag_installed as _is_rag_installed,
|
180
|
+
) # 延迟导入避免潜在循环依赖
|
181
|
+
rag_installed = _is_rag_installed()
|
150
182
|
|
151
183
|
# 提供更新命令
|
152
184
|
package_spec = (
|
@@ -1147,6 +1179,46 @@ def _collect_optional_config_interactively(
|
|
1147
1179
|
or changed
|
1148
1180
|
)
|
1149
1181
|
|
1182
|
+
# Git 校验模式
|
1183
|
+
def _ask_git_check_mode() -> bool:
|
1184
|
+
try:
|
1185
|
+
_key = "JARVIS_GIT_CHECK_MODE"
|
1186
|
+
if not ask_all and _key in config_data:
|
1187
|
+
return False
|
1188
|
+
|
1189
|
+
from jarvis.jarvis_utils.input import get_choice
|
1190
|
+
from jarvis.jarvis_utils.config import get_git_check_mode
|
1191
|
+
|
1192
|
+
current_mode = config_data.get(_key, get_git_check_mode())
|
1193
|
+
choices = ["strict", "warn"]
|
1194
|
+
tip = (
|
1195
|
+
"请选择 Git 仓库检查模式 (JARVIS_GIT_CHECK_MODE):\n"
|
1196
|
+
"此设置决定了当在 Git 仓库中检测到未提交的更改时,Jarvis应如何处理。\n"
|
1197
|
+
"这对于确保代码修改和提交操作在干净的工作区上进行至关重要。\n"
|
1198
|
+
" - strict: (推荐) 如果存在未提交的更改,则中断相关操作(如代码修改、自动提交)。\n"
|
1199
|
+
" 这可以防止意外覆盖或丢失本地工作。\n"
|
1200
|
+
" - warn: 如果存在未提交的更改,仅显示警告信息,然后继续执行操作。\n"
|
1201
|
+
" 适用于您希望绕过检查并自行管理仓库状态的场景。"
|
1202
|
+
)
|
1203
|
+
|
1204
|
+
try:
|
1205
|
+
# 查找当前模式在选项中的索引
|
1206
|
+
default_index = choices.index(current_mode)
|
1207
|
+
except ValueError:
|
1208
|
+
default_index = 0 # 默认为第一个选项
|
1209
|
+
|
1210
|
+
new_mode = get_choice(tip, choices, default_index)
|
1211
|
+
|
1212
|
+
if new_mode == current_mode:
|
1213
|
+
return False
|
1214
|
+
|
1215
|
+
config_data[_key] = new_mode
|
1216
|
+
return True
|
1217
|
+
except Exception:
|
1218
|
+
return False
|
1219
|
+
|
1220
|
+
changed = _ask_git_check_mode() or changed
|
1221
|
+
|
1150
1222
|
# Git 提交提示词(可选)
|
1151
1223
|
changed = (
|
1152
1224
|
_ask_and_set_optional_str(
|
@@ -1466,34 +1538,39 @@ def _read_old_config_file(config_file):
|
|
1466
1538
|
)
|
1467
1539
|
|
1468
1540
|
|
1469
|
-
def while_success(func: Callable[[], Any], sleep_time: float = 0.1) -> Any:
|
1541
|
+
def while_success(func: Callable[[], Any], sleep_time: float = 0.1, max_retries: int = 5) -> Any:
|
1470
1542
|
"""循环执行函数直到成功(累计日志后统一打印,避免逐次加框)
|
1471
1543
|
|
1472
1544
|
参数:
|
1473
1545
|
func -- 要执行的函数
|
1474
1546
|
sleep_time -- 每次失败后的等待时间(秒)
|
1547
|
+
max_retries -- 最大重试次数,默认5次
|
1475
1548
|
|
1476
1549
|
返回:
|
1477
1550
|
函数执行结果
|
1478
1551
|
"""
|
1479
1552
|
result: Any = None
|
1480
|
-
|
1553
|
+
retry_count = 0
|
1554
|
+
while retry_count < max_retries:
|
1481
1555
|
try:
|
1482
1556
|
result = func()
|
1483
1557
|
break
|
1484
1558
|
except Exception:
|
1485
|
-
|
1486
|
-
|
1559
|
+
retry_count += 1
|
1560
|
+
if retry_count < max_retries:
|
1561
|
+
PrettyOutput.print(f"重试中 ({retry_count}/{max_retries}),等待 {sleep_time}s...", OutputType.WARNING)
|
1562
|
+
time.sleep(sleep_time)
|
1487
1563
|
continue
|
1488
1564
|
return result
|
1489
1565
|
|
1490
1566
|
|
1491
|
-
def while_true(func: Callable[[], bool], sleep_time: float = 0.1) -> Any:
|
1567
|
+
def while_true(func: Callable[[], bool], sleep_time: float = 0.1, max_retries: int = 5) -> Any:
|
1492
1568
|
"""循环执行函数直到返回True(累计日志后统一打印,避免逐次加框)
|
1493
1569
|
|
1494
1570
|
参数:
|
1495
1571
|
func: 要执行的函数,必须返回布尔值
|
1496
1572
|
sleep_time: 每次失败后的等待时间(秒)
|
1573
|
+
max_retries: 最大重试次数,默认5次
|
1497
1574
|
|
1498
1575
|
返回:
|
1499
1576
|
函数最终返回的True值
|
@@ -1503,12 +1580,15 @@ def while_true(func: Callable[[], bool], sleep_time: float = 0.1) -> Any:
|
|
1503
1580
|
不捕获异常,异常会直接抛出
|
1504
1581
|
"""
|
1505
1582
|
ret: bool = False
|
1506
|
-
|
1583
|
+
retry_count = 0
|
1584
|
+
while retry_count < max_retries:
|
1507
1585
|
ret = func()
|
1508
1586
|
if ret:
|
1509
1587
|
break
|
1510
|
-
|
1511
|
-
|
1588
|
+
retry_count += 1
|
1589
|
+
if retry_count < max_retries:
|
1590
|
+
PrettyOutput.print(f"重试中 ({retry_count}/{max_retries}),等待 {sleep_time}s...", OutputType.WARNING)
|
1591
|
+
time.sleep(sleep_time)
|
1512
1592
|
return ret
|
1513
1593
|
|
1514
1594
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: jarvis-ai-assistant
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.27
|
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
|
@@ -64,8 +64,7 @@ Requires-Dist: plotext==5.2.8
|
|
64
64
|
Requires-Dist: packaging>=24.2
|
65
65
|
Provides-Extra: dev
|
66
66
|
Requires-Dist: pytest; extra == "dev"
|
67
|
-
Requires-Dist:
|
68
|
-
Requires-Dist: isort; extra == "dev"
|
67
|
+
Requires-Dist: ruff; extra == "dev"
|
69
68
|
Requires-Dist: mypy; extra == "dev"
|
70
69
|
Requires-Dist: build; extra == "dev"
|
71
70
|
Requires-Dist: twine; extra == "dev"
|
@@ -1,28 +1,33 @@
|
|
1
|
-
jarvis/__init__.py,sha256=
|
2
|
-
jarvis/jarvis_agent/__init__.py,sha256=
|
1
|
+
jarvis/__init__.py,sha256=DlhBYMC44U1RQMIeyt3Nd2Eh37aTzGgUrvliKlFIIBE,74
|
2
|
+
jarvis/jarvis_agent/__init__.py,sha256=TjR_LJ56XBYrh4ip1OWF6jYpJdAqTc_zJM2pjxjzYjI,42363
|
3
3
|
jarvis/jarvis_agent/agent_manager.py,sha256=mmDe26Wa1Dnyp8CkTKupcKipC-5HSuCnk-oVJseOdTg,2801
|
4
4
|
jarvis/jarvis_agent/builtin_input_handler.py,sha256=wS-FqpT3pIXwHn1dfL3SpXonUKWgVThbQueUIeyRc2U,2917
|
5
|
+
jarvis/jarvis_agent/config.py,sha256=Ni1aTVzmdERJ89A1jsC21Tsys_9MM-TTx1w5XwxyEwA,3130
|
5
6
|
jarvis/jarvis_agent/config_editor.py,sha256=IHyuwI4SRDrqxz8lO0NNgt2F3uYAw1WEKXMxQV49bYI,1928
|
6
7
|
jarvis/jarvis_agent/edit_file_handler.py,sha256=5sFz84jqy2gpc0aLOre2bvz8_DitlBoWZs_cQwftWLw,11570
|
8
|
+
jarvis/jarvis_agent/event_bus.py,sha256=-QVAGTe3B2Cu3-FGkw78l8XikS4vPZ-D61ajUtplOCU,1515
|
7
9
|
jarvis/jarvis_agent/file_methodology_manager.py,sha256=PwDUQwq7HVIyPInsN8fgWyMXLwi8heIXPrqfBZJhVHs,4260
|
8
|
-
jarvis/jarvis_agent/jarvis.py,sha256=
|
10
|
+
jarvis/jarvis_agent/jarvis.py,sha256=IAt5QWOR2ZTAsuLGXPf13FZ-rixRZg3hDnk4cAZ9m70,24012
|
9
11
|
jarvis/jarvis_agent/main.py,sha256=bFcwXWC6O05jQiXy6ED_bHjdjDo5VwV_i1BoBEAzgP0,3336
|
10
|
-
jarvis/jarvis_agent/memory_manager.py,sha256=
|
12
|
+
jarvis/jarvis_agent/memory_manager.py,sha256=fOCmH3QDq9D-tsFKauI0GHER-gGfEPhRDo97MqeUBtg,8003
|
11
13
|
jarvis/jarvis_agent/methodology_share_manager.py,sha256=AB_J9BwRgaeENQfL6bH83FOLeLrgHhppMb7psJNevKs,6874
|
12
14
|
jarvis/jarvis_agent/output_handler.py,sha256=P7oWpXBGFfOsWq7cIhS_z9crkQ19ES7qU5pM92KKjAs,1172
|
13
15
|
jarvis/jarvis_agent/prompt_builder.py,sha256=PH1fPDVa8z_RXkoXHJFNDf8PQjUoLNLYwkh2lC__p40,1705
|
16
|
+
jarvis/jarvis_agent/prompt_manager.py,sha256=_1qLBSA3yn4nT_N3X2npTpW40Cp-pMeyvnzu-pnG0iU,2720
|
14
17
|
jarvis/jarvis_agent/prompts.py,sha256=X6cXa-n0xqBQ8LDTgLsD0kqziAh1s0cNp89i4mxcvHg,9444
|
15
18
|
jarvis/jarvis_agent/protocols.py,sha256=JWnJDikFEuwvFUv7uzXu0ggJ4O9K2FkMnfVCwIJ5REw,873
|
19
|
+
jarvis/jarvis_agent/run_loop.py,sha256=MccMT_8lPS4H8QaF7YuatKZR4ucBzy71H-_6mIZliB4,4885
|
16
20
|
jarvis/jarvis_agent/session_manager.py,sha256=5wVcaZGwJ9cEKTQglSbqyxUDJ2fI5KxYN8C8L16UWLw,3024
|
17
21
|
jarvis/jarvis_agent/share_manager.py,sha256=MF2RlomcgPxF8nVUk28DP6IRddZ_tot5l_YRvy0qXSQ,8726
|
18
22
|
jarvis/jarvis_agent/shell_input_handler.py,sha256=YjzmtcBUqJDYeD1i1cA1betUKaGOcvKNo8biayYEfc8,1860
|
19
|
-
jarvis/jarvis_agent/task_analyzer.py,sha256=
|
20
|
-
jarvis/jarvis_agent/task_manager.py,sha256=
|
23
|
+
jarvis/jarvis_agent/task_analyzer.py,sha256=5TcS9nltqcm_gb-6I3wuc0Tc8pOgTrQSiwrJdkGDdSw,7676
|
24
|
+
jarvis/jarvis_agent/task_manager.py,sha256=voR-L8okMWRKxZh79FsER0DaUHk-fKOzijXlDiQzJxs,6399
|
21
25
|
jarvis/jarvis_agent/tool_executor.py,sha256=k73cKhZEZpljvui4ZxALlFEIE-iLzJ32Softsmiwzqk,1896
|
22
26
|
jarvis/jarvis_agent/tool_share_manager.py,sha256=Do08FRxis0ynwR2a6iRoa6Yq0qCP8NkuhMbPrimaxMA,5169
|
27
|
+
jarvis/jarvis_agent/user_interaction.py,sha256=rMQjJoTrabZMmt-SOtg1UPCqxTdPDOaPOhfmCwE773M,1463
|
23
28
|
jarvis/jarvis_code_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
24
|
-
jarvis/jarvis_code_agent/code_agent.py,sha256=
|
25
|
-
jarvis/jarvis_code_agent/lint.py,sha256=
|
29
|
+
jarvis/jarvis_code_agent/code_agent.py,sha256=2er9wAgYeMibaZLgWBq5vDLjO734aWEaxkpKxCsw_XM,32101
|
30
|
+
jarvis/jarvis_code_agent/lint.py,sha256=_qLJB_bC3PuoHG-j4EGOnYzNGO26jHlKLbkysfyQW1c,3954
|
26
31
|
jarvis/jarvis_code_analysis/code_review.py,sha256=99izndiYBDcDJBu-gAXqpUkN9usmFfYroqJkZUw7AwA,34481
|
27
32
|
jarvis/jarvis_code_analysis/checklists/__init__.py,sha256=LIXAYa1sW3l7foP6kohLWnE98I_EQ0T7z5bYKHq6rJA,78
|
28
33
|
jarvis/jarvis_code_analysis/checklists/c_cpp.py,sha256=9t62bMqs6qTkFSio4SKkj88qyb5ZubWrw3MxJBQ4X1A,1317
|
@@ -44,11 +49,11 @@ jarvis/jarvis_code_analysis/checklists/shell.py,sha256=aRFYhQQvTgbYd-uY5pc8UHIUA
|
|
44
49
|
jarvis/jarvis_code_analysis/checklists/sql.py,sha256=vR0T6qC7b4dURjJVAd7kSVxyvZEQXPG1Jqc2sNTGp5c,2355
|
45
50
|
jarvis/jarvis_code_analysis/checklists/swift.py,sha256=TPx4I6Gupvs6tSerRKmTSKEPQpOLEbH2Y7LXg1uBgxc,2566
|
46
51
|
jarvis/jarvis_code_analysis/checklists/web.py,sha256=25gGD7pDadZQybNFvALYxWvK0VRjGQb1NVJQElwjyk0,3943
|
47
|
-
jarvis/jarvis_data/config_schema.json,sha256=
|
52
|
+
jarvis/jarvis_data/config_schema.json,sha256=fXISAybgeJOmXHPK0j3XjBgA25mn6ZHz7Qq8dl1O9wU,12863
|
48
53
|
jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4,sha256=Ijkht27pm96ZW3_3OFE-7xAPtR0YyTWXoRO8_-hlsqc,1681126
|
49
54
|
jarvis/jarvis_git_squash/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
50
|
-
jarvis/jarvis_git_squash/main.py,sha256=
|
51
|
-
jarvis/jarvis_git_utils/git_commiter.py,sha256=
|
55
|
+
jarvis/jarvis_git_squash/main.py,sha256=BRbsEQVXwseVFKliVqV8_JPh1om6QT6dLTHw0jQ7OE0,2474
|
56
|
+
jarvis/jarvis_git_utils/git_commiter.py,sha256=mWuP_undXLkrok26gmO83PjBDKc0dPolWEciemXRXos,15790
|
52
57
|
jarvis/jarvis_mcp/__init__.py,sha256=OPMtjD-uq9xAaKCRIDyKIosaFfBe1GBPu1az-mQ0rVM,2048
|
53
58
|
jarvis/jarvis_mcp/sse_mcp_client.py,sha256=UIDBaFNuuaJE0YiKmtbZTqwZpkDI5SaS0my1DIJj-3g,22831
|
54
59
|
jarvis/jarvis_mcp/stdio_mcp_client.py,sha256=APYUksYKlMx7AVNODKOLrTkKZPnp4kqTQIYIuNDDKko,11286
|
@@ -60,7 +65,7 @@ jarvis/jarvis_multi_agent/__init__.py,sha256=Ygp4DBBkmEXCRcQV3nr07zOxo2Tb4149mi4
|
|
60
65
|
jarvis/jarvis_multi_agent/main.py,sha256=b9IThFMeUZCYSlgT-VT8r7xeBdrEE_zNT11awEc8IdY,1853
|
61
66
|
jarvis/jarvis_platform/__init__.py,sha256=WLQHSiE87PPket2M50_hHzjdMIgPIBx2VF8JfB_NNRk,105
|
62
67
|
jarvis/jarvis_platform/ai8.py,sha256=g8JkqPGs9SEbqstNMCc5rCHO0QcPHX9LNvb7HMWwB-Q,11471
|
63
|
-
jarvis/jarvis_platform/base.py,sha256=
|
68
|
+
jarvis/jarvis_platform/base.py,sha256=wKZJConlNtqpr2w5IGIxu4fNMt8Yr2w8banQJH0wn64,13505
|
64
69
|
jarvis/jarvis_platform/human.py,sha256=jWjW8prEag79e6ddqTPV4nz_Gz6zFBfO4a1EbvP8QWA,4908
|
65
70
|
jarvis/jarvis_platform/kimi.py,sha256=dLES_E0VmDQ3TwjTZk5vCGdbvdBeSVvvlXR90m6vPfY,15711
|
66
71
|
jarvis/jarvis_platform/openai.py,sha256=0YSeDGHRSPQP2haEzFARx_aZH_d_UZ-HSCsJLh2hW5k,8037
|
@@ -68,11 +73,11 @@ jarvis/jarvis_platform/registry.py,sha256=uwQvivGKuDT2LI-e_jUPvPR8Qyc7KTANkWGZLM
|
|
68
73
|
jarvis/jarvis_platform/tongyi.py,sha256=0UM1VLbBYrlNF5dSRqp2Kefeb0FkXhKhc7PnrsZWqOQ,23456
|
69
74
|
jarvis/jarvis_platform/yuanbao.py,sha256=W0aIQOZoHt4QGYYBYzRbVWlgwAdhzoCv93xD7v8Lvqc,24004
|
70
75
|
jarvis/jarvis_platform_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
71
|
-
jarvis/jarvis_platform_manager/main.py,sha256=
|
76
|
+
jarvis/jarvis_platform_manager/main.py,sha256=yv7m8cNRBe4nk0Kui1w2PKTUr9Sb3wrQirvmyAUbr5U,20400
|
72
77
|
jarvis/jarvis_platform_manager/service.py,sha256=WG2r0JRBGfSLGdsKxqYvmaacU_ne3PTn3RkczTzUb_M,14899
|
73
78
|
jarvis/jarvis_rag/__init__.py,sha256=HRTXgnQxDuaE9x-e3r6SYqhJ5d4DSI_rrIxy2IGY6qk,320
|
74
79
|
jarvis/jarvis_rag/cache.py,sha256=Tqx_Oe-AhuWlMXHGHUaIuG6OEHoHBVZq7mL3kldtFFU,2723
|
75
|
-
jarvis/jarvis_rag/cli.py,sha256=
|
80
|
+
jarvis/jarvis_rag/cli.py,sha256=4tcB76I87QNHCSp29JDslETJSH5oWPtNYMlos-6dZu0,17532
|
76
81
|
jarvis/jarvis_rag/embedding_manager.py,sha256=SF7BW8hoZWzDhDqlOdhnX6XTw42Fx2GKs7Y_RUT1ydo,10400
|
77
82
|
jarvis/jarvis_rag/llm_interface.py,sha256=DH46Vm3AgzK1o41X7wUUYUbbOOVPgmDCxS5l6djm9eA,4561
|
78
83
|
jarvis/jarvis_rag/query_rewriter.py,sha256=LGAWZ8kwH_dpquuYqc4QWC7IXmHX3SsnPSYMWOn-nDE,4072
|
@@ -82,8 +87,8 @@ jarvis/jarvis_rag/retriever.py,sha256=BNEFZAgxTbmkxzBP1uy1wz3MX8wJN1wx5EtfsHqakq
|
|
82
87
|
jarvis/jarvis_smart_shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
83
88
|
jarvis/jarvis_smart_shell/main.py,sha256=JizPfVI-7-GqnYxdg77RHietGet6hZE6xUZoUCwKShE,14971
|
84
89
|
jarvis/jarvis_stats/__init__.py,sha256=jJzgP43nxzLbNGs8Do4Jfta1PNCJMf1Oq9YTPd6EnFM,342
|
85
|
-
jarvis/jarvis_stats/cli.py,sha256=
|
86
|
-
jarvis/jarvis_stats/stats.py,sha256=
|
90
|
+
jarvis/jarvis_stats/cli.py,sha256=ngKrJ5Y4fUqZ4ghcCTvk2mDZsKWZw1ZgvTtVWu9p9Ec,11552
|
91
|
+
jarvis/jarvis_stats/stats.py,sha256=XXBpU5vpi60rTpnTr3Nj7m7-uBQpnvopCj1CwU4rfew,25391
|
87
92
|
jarvis/jarvis_stats/storage.py,sha256=Lo2kPpqM4RDW0llkDWBTlij9B2k1FfmYgo05ekiaqoQ,22079
|
88
93
|
jarvis/jarvis_stats/visualizer.py,sha256=ZIBmGELzs6c7qM01tQql1HF6eFKn6HDGVQfKXRUUIY0,8529
|
89
94
|
jarvis/jarvis_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -97,33 +102,34 @@ jarvis/jarvis_tools/generate_new_tool.py,sha256=OCHkBOCQflgMZXRP4vgX3blnJOUq-_Qk
|
|
97
102
|
jarvis/jarvis_tools/methodology.py,sha256=_K4GIDUodGEma3SvNRo7Qs5rliijgNespVLyAPN35JU,5233
|
98
103
|
jarvis/jarvis_tools/read_code.py,sha256=qeQZ_emyPI5RTFx4HSgLBtWSwh8V5chqMjxu2uKzmfY,6100
|
99
104
|
jarvis/jarvis_tools/read_webpage.py,sha256=YTmoalY8y-jdQuoj9IL6ZjXPOevUj2P_9arJngPhbUY,5317
|
100
|
-
jarvis/jarvis_tools/registry.py,sha256=
|
105
|
+
jarvis/jarvis_tools/registry.py,sha256=xjlOvyWM8xzT6WJs80G4AQN7ICMgXoPmOgKIKYPIn5U,32909
|
101
106
|
jarvis/jarvis_tools/retrieve_memory.py,sha256=hQ3s4IgBHtmUPzuWFl5Pc2FLEuT2gdi4l4NlUoO9pQM,8640
|
102
107
|
jarvis/jarvis_tools/rewrite_file.py,sha256=CuvjWPTbUaPbex9FKSmw_Ru4r6R-CX_3vqTqCTp8nHA,6959
|
103
108
|
jarvis/jarvis_tools/save_memory.py,sha256=QKj6iYZL2XxPX0NnU9HqvoDOpJZ38mJmatDmHLK2r74,7012
|
104
109
|
jarvis/jarvis_tools/search_web.py,sha256=8ugOcGBsAEg59pX_WS0WADuu7Klw7XGR6guEMz4OnwI,6181
|
105
|
-
jarvis/jarvis_tools/sub_agent.py,sha256=
|
106
|
-
jarvis/jarvis_tools/sub_code_agent.py,sha256=
|
110
|
+
jarvis/jarvis_tools/sub_agent.py,sha256=r1RRZwqIp0qiix-EAH8gJA_xECVLpenoCvcqD0a-qEM,7784
|
111
|
+
jarvis/jarvis_tools/sub_code_agent.py,sha256=FzsZPSgevDToLBUXnJECIjNDhMn4st6IiRLLWjoYLQw,8149
|
107
112
|
jarvis/jarvis_tools/virtual_tty.py,sha256=1AYrVNP5QCX1HGo-xi3XEP93cMWZUOkil4ki2gwf7dI,25504
|
108
113
|
jarvis/jarvis_tools/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
109
114
|
jarvis/jarvis_tools/cli/main.py,sha256=pyvSz0-hBduOqQShduv76UcB5wrK0v6MLonpub9AuXg,9334
|
110
115
|
jarvis/jarvis_utils/__init__.py,sha256=67h0ldisGlh3oK4DAeNEL2Bl_VsI3tSmfclasyVlueM,850
|
111
116
|
jarvis/jarvis_utils/builtin_replace_map.py,sha256=4BurljGuiG_I93EBs7mlFlPm9wYC_4CmdTG5tQWpF6g,1712
|
112
117
|
jarvis/jarvis_utils/clipboard.py,sha256=D3wzQeqg_yiH7Axs4d6MRxyNa9XxdnenH-ND2uj2WVQ,2967
|
113
|
-
jarvis/jarvis_utils/config.py,sha256=
|
118
|
+
jarvis/jarvis_utils/config.py,sha256=F_sjwrO5_vyZIfev8EzgtBtSYFTMdIanQ1cLrH-9txk,19120
|
114
119
|
jarvis/jarvis_utils/embedding.py,sha256=oEOEM2qf16DMYwPsQe6srET9BknyjOdY2ef0jsp3Or8,2714
|
115
120
|
jarvis/jarvis_utils/file_processors.py,sha256=XiM248SHS7lLgQDCbORVFWqinbVDUawYxWDOsLXDxP8,3043
|
116
|
-
jarvis/jarvis_utils/
|
121
|
+
jarvis/jarvis_utils/fzf.py,sha256=92u4w5pd6cyxBJlmyw3rXNyxToSAalK79m_aEBmkgV0,1590
|
122
|
+
jarvis/jarvis_utils/git_utils.py,sha256=X-j4aopmzmAW8Uv5rs3SDRnsAQYwJRnR6gR8yxXGEWg,23500
|
117
123
|
jarvis/jarvis_utils/globals.py,sha256=aTrOHcCgPAeZFLFIWMAMiJCYlmr4XhdFZf5gZ745hnE,8900
|
118
124
|
jarvis/jarvis_utils/http.py,sha256=eRhV3-GYuWmQ0ogq9di9WMlQkFcVb1zGCrySnOgT1x0,4392
|
119
|
-
jarvis/jarvis_utils/input.py,sha256=
|
125
|
+
jarvis/jarvis_utils/input.py,sha256=J4ot3ldeCLbhrJdsoQVdl8L6BHg-dJhcrnP3UYL4vis,36502
|
120
126
|
jarvis/jarvis_utils/methodology.py,sha256=3PAMHVF85IflBBblV_mMwkYXMelUML0nZYZ8MOAYUJ8,12918
|
121
127
|
jarvis/jarvis_utils/output.py,sha256=svCHLuXHe3Ta_qfoT5DxO80nyYyMfBFIKgziQS__Nmg,13632
|
122
128
|
jarvis/jarvis_utils/tag.py,sha256=f211opbbbTcSyzCDwuIK_oCnKhXPNK-RknYyGzY1yD0,431
|
123
|
-
jarvis/jarvis_utils/utils.py,sha256=
|
124
|
-
jarvis_ai_assistant-0.3.
|
125
|
-
jarvis_ai_assistant-0.3.
|
126
|
-
jarvis_ai_assistant-0.3.
|
127
|
-
jarvis_ai_assistant-0.3.
|
128
|
-
jarvis_ai_assistant-0.3.
|
129
|
-
jarvis_ai_assistant-0.3.
|
129
|
+
jarvis/jarvis_utils/utils.py,sha256=CBEr4CeA8npCX7HQT0z2rpr1FmuehrtjWz1dpUW2Uk8,65391
|
130
|
+
jarvis_ai_assistant-0.3.27.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
|
131
|
+
jarvis_ai_assistant-0.3.27.dist-info/METADATA,sha256=7hKr_nyMqxJ1qysd1ihzY44fdDinvJ18UoJ2gQlDjCc,18752
|
132
|
+
jarvis_ai_assistant-0.3.27.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
133
|
+
jarvis_ai_assistant-0.3.27.dist-info/entry_points.txt,sha256=4GcWKFxRJD-QU14gw_3ZaW4KuEVxOcZK9i270rwPdjA,1395
|
134
|
+
jarvis_ai_assistant-0.3.27.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
|
135
|
+
jarvis_ai_assistant-0.3.27.dist-info/RECORD,,
|
File without changes
|
{jarvis_ai_assistant-0.3.25.dist-info → jarvis_ai_assistant-0.3.27.dist-info}/entry_points.txt
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.25.dist-info → jarvis_ai_assistant-0.3.27.dist-info}/licenses/LICENSE
RENAMED
File without changes
|
File without changes
|