jarvis-ai-assistant 0.4.2__py3-none-any.whl → 0.5.1__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 +117 -6
- jarvis/jarvis_agent/jarvis.py +6 -0
- jarvis/jarvis_agent/share_manager.py +8 -1
- jarvis/jarvis_agent/task_planner.py +218 -0
- jarvis/jarvis_code_agent/code_agent.py +99 -3
- jarvis/jarvis_code_analysis/code_review.py +483 -568
- jarvis/jarvis_data/config_schema.json +8 -3
- jarvis/jarvis_sec/README.md +180 -0
- jarvis/jarvis_sec/__init__.py +674 -0
- jarvis/jarvis_sec/checkers/__init__.py +33 -0
- jarvis/jarvis_sec/checkers/c_checker.py +1269 -0
- jarvis/jarvis_sec/checkers/rust_checker.py +367 -0
- jarvis/jarvis_sec/cli.py +110 -0
- jarvis/jarvis_sec/prompts.py +324 -0
- jarvis/jarvis_sec/report.py +260 -0
- jarvis/jarvis_sec/types.py +20 -0
- jarvis/jarvis_sec/workflow.py +513 -0
- jarvis/jarvis_tools/registry.py +20 -14
- jarvis/jarvis_tools/sub_agent.py +4 -3
- jarvis/jarvis_tools/sub_code_agent.py +3 -3
- jarvis/jarvis_utils/config.py +14 -2
- jarvis/jarvis_utils/methodology.py +25 -19
- jarvis/jarvis_utils/utils.py +193 -2
- {jarvis_ai_assistant-0.4.2.dist-info → jarvis_ai_assistant-0.5.1.dist-info}/METADATA +1 -1
- {jarvis_ai_assistant-0.4.2.dist-info → jarvis_ai_assistant-0.5.1.dist-info}/RECORD +30 -19
- {jarvis_ai_assistant-0.4.2.dist-info → jarvis_ai_assistant-0.5.1.dist-info}/entry_points.txt +2 -0
- {jarvis_ai_assistant-0.4.2.dist-info → jarvis_ai_assistant-0.5.1.dist-info}/WHEEL +0 -0
- {jarvis_ai_assistant-0.4.2.dist-info → jarvis_ai_assistant-0.5.1.dist-info}/licenses/LICENSE +0 -0
- {jarvis_ai_assistant-0.4.2.dist-info → jarvis_ai_assistant-0.5.1.dist-info}/top_level.txt +0 -0
|
@@ -54,25 +54,31 @@ def _load_all_methodologies() -> Dict[str, str]:
|
|
|
54
54
|
# 如果配置了中心方法论仓库,将其添加到加载路径
|
|
55
55
|
central_repo = get_central_methodology_repo()
|
|
56
56
|
if central_repo:
|
|
57
|
-
#
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
57
|
+
# 支持本地目录路径或Git仓库URL
|
|
58
|
+
expanded = os.path.expanduser(os.path.expandvars(central_repo))
|
|
59
|
+
if os.path.isdir(expanded):
|
|
60
|
+
# 直接使用本地目录(支持Git仓库的子目录)
|
|
61
|
+
methodology_dirs.append(expanded)
|
|
62
|
+
else:
|
|
63
|
+
# 中心方法论仓库存储在数据目录下的特定位置
|
|
64
|
+
central_repo_path = os.path.join(get_data_dir(), "central_methodology_repo")
|
|
65
|
+
methodology_dirs.append(central_repo_path)
|
|
66
|
+
|
|
67
|
+
# 确保中心方法论仓库被克隆/更新
|
|
68
|
+
if not os.path.exists(central_repo_path):
|
|
69
|
+
try:
|
|
70
|
+
import subprocess
|
|
71
|
+
|
|
72
|
+
PrettyOutput.print(
|
|
73
|
+
f"正在克隆中心方法论仓库: {central_repo}", OutputType.INFO
|
|
74
|
+
)
|
|
75
|
+
subprocess.run(
|
|
76
|
+
["git", "clone", central_repo, central_repo_path], check=True
|
|
77
|
+
)
|
|
78
|
+
except Exception as e:
|
|
79
|
+
PrettyOutput.print(
|
|
80
|
+
f"克隆中心方法论仓库失败: {str(e)}", OutputType.ERROR
|
|
81
|
+
)
|
|
76
82
|
|
|
77
83
|
# --- 全局每日更新检查 ---
|
|
78
84
|
daily_check_git_updates(methodology_dirs, "methodologies")
|
jarvis/jarvis_utils/utils.py
CHANGED
|
@@ -6,6 +6,8 @@ import signal
|
|
|
6
6
|
import subprocess
|
|
7
7
|
import sys
|
|
8
8
|
import time
|
|
9
|
+
import atexit
|
|
10
|
+
import errno
|
|
9
11
|
from pathlib import Path
|
|
10
12
|
from typing import Any, Callable, Dict, List, Optional, Tuple
|
|
11
13
|
from datetime import datetime, date
|
|
@@ -205,6 +207,130 @@ def _setup_signal_handler() -> None:
|
|
|
205
207
|
signal.signal(signal.SIGINT, sigint_handler)
|
|
206
208
|
|
|
207
209
|
|
|
210
|
+
# ----------------------------
|
|
211
|
+
# 单实例文件锁(放置于初始化早期使用)
|
|
212
|
+
# ----------------------------
|
|
213
|
+
_INSTANCE_LOCK_PATH: Optional[Path] = None
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
def _get_instance_lock_path(lock_name: str = "instance.lock") -> Path:
|
|
217
|
+
try:
|
|
218
|
+
data_dir = Path(str(get_data_dir()))
|
|
219
|
+
except Exception:
|
|
220
|
+
data_dir = Path(os.path.expanduser("~/.jarvis"))
|
|
221
|
+
data_dir.mkdir(parents=True, exist_ok=True)
|
|
222
|
+
return data_dir / lock_name
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
def _read_lock_owner_pid(lock_path: Path) -> Optional[int]:
|
|
226
|
+
try:
|
|
227
|
+
txt = lock_path.read_text(encoding="utf-8", errors="ignore").strip()
|
|
228
|
+
if not txt:
|
|
229
|
+
return None
|
|
230
|
+
try:
|
|
231
|
+
info = json.loads(txt)
|
|
232
|
+
pid = info.get("pid")
|
|
233
|
+
return int(pid) if pid is not None else None
|
|
234
|
+
except Exception:
|
|
235
|
+
# 兼容纯数字PID
|
|
236
|
+
return int(txt)
|
|
237
|
+
except Exception:
|
|
238
|
+
return None
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
def _is_process_alive(pid: int) -> bool:
|
|
242
|
+
if pid is None or pid <= 0:
|
|
243
|
+
return False
|
|
244
|
+
try:
|
|
245
|
+
os.kill(pid, 0)
|
|
246
|
+
except ProcessLookupError:
|
|
247
|
+
return False
|
|
248
|
+
except PermissionError:
|
|
249
|
+
# 无权限但进程存在
|
|
250
|
+
return True
|
|
251
|
+
except OSError as e:
|
|
252
|
+
# 某些平台上,EPERM 表示进程存在但无权限
|
|
253
|
+
if getattr(e, "errno", None) == errno.EPERM:
|
|
254
|
+
return True
|
|
255
|
+
return False
|
|
256
|
+
else:
|
|
257
|
+
return True
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
def _release_instance_lock() -> None:
|
|
261
|
+
global _INSTANCE_LOCK_PATH
|
|
262
|
+
try:
|
|
263
|
+
if _INSTANCE_LOCK_PATH and _INSTANCE_LOCK_PATH.exists():
|
|
264
|
+
_INSTANCE_LOCK_PATH.unlink()
|
|
265
|
+
except Exception:
|
|
266
|
+
# 清理失败不影响退出
|
|
267
|
+
pass
|
|
268
|
+
_INSTANCE_LOCK_PATH = None
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
def _acquire_single_instance_lock(lock_name: str = "instance.lock") -> None:
|
|
272
|
+
"""
|
|
273
|
+
在数据目录(~/.jarvis 或配置的数据目录)下创建实例锁,防止重复启动。
|
|
274
|
+
如果检测到已有存活实例,提示后退出。
|
|
275
|
+
"""
|
|
276
|
+
global _INSTANCE_LOCK_PATH
|
|
277
|
+
lock_path = _get_instance_lock_path(lock_name)
|
|
278
|
+
|
|
279
|
+
# 已存在锁:检查是否为有效存活实例
|
|
280
|
+
if lock_path.exists():
|
|
281
|
+
pid = _read_lock_owner_pid(lock_path)
|
|
282
|
+
if pid and _is_process_alive(pid):
|
|
283
|
+
PrettyOutput.print(
|
|
284
|
+
f"检测到已有一个 Jarvis 实例正在运行 (PID: {pid})。\n"
|
|
285
|
+
f"如果确认不存在正在运行的实例,请删除锁文件后重试:{lock_path}",
|
|
286
|
+
OutputType.WARNING,
|
|
287
|
+
)
|
|
288
|
+
sys.exit(0)
|
|
289
|
+
# 尝试移除陈旧锁
|
|
290
|
+
try:
|
|
291
|
+
lock_path.unlink()
|
|
292
|
+
except Exception:
|
|
293
|
+
PrettyOutput.print(
|
|
294
|
+
f"无法删除旧锁文件:{lock_path},请手动清理后重试。",
|
|
295
|
+
OutputType.ERROR,
|
|
296
|
+
)
|
|
297
|
+
sys.exit(1)
|
|
298
|
+
|
|
299
|
+
# 原子创建锁文件,避免并发竞争
|
|
300
|
+
flags = os.O_CREAT | os.O_EXCL | os.O_WRONLY
|
|
301
|
+
try:
|
|
302
|
+
fd = os.open(str(lock_path), flags)
|
|
303
|
+
with os.fdopen(fd, "w", encoding="utf-8") as fp:
|
|
304
|
+
payload = {
|
|
305
|
+
"pid": os.getpid(),
|
|
306
|
+
"time": int(time.time()),
|
|
307
|
+
"argv": sys.argv[:10],
|
|
308
|
+
}
|
|
309
|
+
try:
|
|
310
|
+
fp.write(json.dumps(payload, ensure_ascii=False))
|
|
311
|
+
except Exception:
|
|
312
|
+
fp.write(str(os.getpid()))
|
|
313
|
+
_INSTANCE_LOCK_PATH = lock_path
|
|
314
|
+
atexit.register(_release_instance_lock)
|
|
315
|
+
except FileExistsError:
|
|
316
|
+
# 极端并发下再次校验
|
|
317
|
+
pid = _read_lock_owner_pid(lock_path)
|
|
318
|
+
if pid and _is_process_alive(pid):
|
|
319
|
+
PrettyOutput.print(
|
|
320
|
+
f"检测到已有一个 Jarvis 实例正在运行 (PID: {pid})。",
|
|
321
|
+
OutputType.WARNING,
|
|
322
|
+
)
|
|
323
|
+
sys.exit(0)
|
|
324
|
+
PrettyOutput.print(
|
|
325
|
+
f"锁文件已存在但可能为陈旧状态:{lock_path},请手动删除后重试。",
|
|
326
|
+
OutputType.ERROR,
|
|
327
|
+
)
|
|
328
|
+
sys.exit(1)
|
|
329
|
+
except Exception as e:
|
|
330
|
+
PrettyOutput.print(f"创建实例锁失败: {e}", OutputType.ERROR)
|
|
331
|
+
sys.exit(1)
|
|
332
|
+
|
|
333
|
+
|
|
208
334
|
def _check_pip_updates() -> bool:
|
|
209
335
|
"""检查pip安装的Jarvis是否有更新
|
|
210
336
|
|
|
@@ -1212,6 +1338,37 @@ def _collect_optional_config_interactively(
|
|
|
1212
1338
|
or changed
|
|
1213
1339
|
)
|
|
1214
1340
|
|
|
1341
|
+
# 新增:会话与调试相关配置
|
|
1342
|
+
changed = (
|
|
1343
|
+
_ask_and_set(
|
|
1344
|
+
"JARVIS_SAVE_SESSION_HISTORY",
|
|
1345
|
+
"是否保存会话记录?",
|
|
1346
|
+
False,
|
|
1347
|
+
"bool",
|
|
1348
|
+
)
|
|
1349
|
+
or changed
|
|
1350
|
+
)
|
|
1351
|
+
changed = (
|
|
1352
|
+
_ask_and_set(
|
|
1353
|
+
"JARVIS_PRINT_ERROR_TRACEBACK",
|
|
1354
|
+
"是否在错误输出时打印回溯调用链?",
|
|
1355
|
+
False,
|
|
1356
|
+
"bool",
|
|
1357
|
+
)
|
|
1358
|
+
or changed
|
|
1359
|
+
)
|
|
1360
|
+
|
|
1361
|
+
# 其它可选开关
|
|
1362
|
+
changed = (
|
|
1363
|
+
_ask_and_set(
|
|
1364
|
+
"JARVIS_SKIP_PREDEFINED_TASKS",
|
|
1365
|
+
"是否跳过预定义任务加载(不读取 pre-command 列表)?",
|
|
1366
|
+
False,
|
|
1367
|
+
"bool",
|
|
1368
|
+
)
|
|
1369
|
+
or changed
|
|
1370
|
+
)
|
|
1371
|
+
|
|
1215
1372
|
# 代码与工具操作安全提示
|
|
1216
1373
|
changed = (
|
|
1217
1374
|
_ask_and_set(
|
|
@@ -1258,6 +1415,32 @@ def _collect_optional_config_interactively(
|
|
|
1258
1415
|
)
|
|
1259
1416
|
or changed
|
|
1260
1417
|
)
|
|
1418
|
+
# 规划相关:最大递归层数(仅在启用规划时生效,CLI --plan/--no-plan 控制启用)
|
|
1419
|
+
changed = (
|
|
1420
|
+
_ask_and_set_int(
|
|
1421
|
+
"JARVIS_PLAN_MAX_DEPTH",
|
|
1422
|
+
"任务规划的最大层数(限制递归拆分深度,默认2;仅在启用规划时生效)",
|
|
1423
|
+
3,
|
|
1424
|
+
)
|
|
1425
|
+
or changed
|
|
1426
|
+
)
|
|
1427
|
+
# 新增:自动总结轮次与脚本超时
|
|
1428
|
+
changed = (
|
|
1429
|
+
_ask_and_set_int(
|
|
1430
|
+
"JARVIS_AUTO_SUMMARY_ROUNDS",
|
|
1431
|
+
"基于对话轮次的自动总结阈值(达到该轮次后自动总结并清理历史,默认50)",
|
|
1432
|
+
50,
|
|
1433
|
+
)
|
|
1434
|
+
or changed
|
|
1435
|
+
)
|
|
1436
|
+
changed = (
|
|
1437
|
+
_ask_and_set_int(
|
|
1438
|
+
"JARVIS_SCRIPT_EXECUTION_TIMEOUT",
|
|
1439
|
+
"脚本执行超时时间(秒,默认300,仅非交互模式生效)",
|
|
1440
|
+
300,
|
|
1441
|
+
)
|
|
1442
|
+
or changed
|
|
1443
|
+
)
|
|
1261
1444
|
|
|
1262
1445
|
# 目录类配置(逗号分隔)
|
|
1263
1446
|
changed = (
|
|
@@ -1295,6 +1478,14 @@ def _collect_optional_config_interactively(
|
|
|
1295
1478
|
)
|
|
1296
1479
|
or changed
|
|
1297
1480
|
)
|
|
1481
|
+
# 新增:工具调用后回调实现目录
|
|
1482
|
+
changed = (
|
|
1483
|
+
_ask_and_set_list(
|
|
1484
|
+
"JARVIS_AFTER_TOOL_CALL_CB_DIRS",
|
|
1485
|
+
"指定工具调用后回调实现目录(逗号分隔,留空跳过):",
|
|
1486
|
+
)
|
|
1487
|
+
or changed
|
|
1488
|
+
)
|
|
1298
1489
|
|
|
1299
1490
|
# Web 搜索配置(可选)
|
|
1300
1491
|
changed = (
|
|
@@ -1439,7 +1630,7 @@ def _collect_optional_config_interactively(
|
|
|
1439
1630
|
changed = (
|
|
1440
1631
|
_ask_and_set(
|
|
1441
1632
|
"JARVIS_CENTRAL_METHODOLOGY_REPO",
|
|
1442
|
-
"
|
|
1633
|
+
"请输入中心方法论仓库路径或Git地址(可留空跳过):",
|
|
1443
1634
|
"",
|
|
1444
1635
|
"str",
|
|
1445
1636
|
)
|
|
@@ -1448,7 +1639,7 @@ def _collect_optional_config_interactively(
|
|
|
1448
1639
|
changed = (
|
|
1449
1640
|
_ask_and_set(
|
|
1450
1641
|
"JARVIS_CENTRAL_TOOL_REPO",
|
|
1451
|
-
"
|
|
1642
|
+
"请输入中心工具仓库路径或Git地址(可留空跳过):",
|
|
1452
1643
|
"",
|
|
1453
1644
|
"str",
|
|
1454
1645
|
)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
jarvis/__init__.py,sha256=
|
|
2
|
-
jarvis/jarvis_agent/__init__.py,sha256=
|
|
1
|
+
jarvis/__init__.py,sha256=sOKEklWEZaCxQadO6f1UkOMRanbgJ3rJjjBTWjm6JC4,73
|
|
2
|
+
jarvis/jarvis_agent/__init__.py,sha256=uEd9UrrHK5CRpOVSCxPESfxcAclMfoRacQrzVzQLiEk,56763
|
|
3
3
|
jarvis/jarvis_agent/agent_manager.py,sha256=Q0S-mYTPt8Xd7RKGoLWoWU_RP_wEXFWxCjve8_t2f2A,3807
|
|
4
4
|
jarvis/jarvis_agent/builtin_input_handler.py,sha256=wS-FqpT3pIXwHn1dfL3SpXonUKWgVThbQueUIeyRc2U,2917
|
|
5
5
|
jarvis/jarvis_agent/config_editor.py,sha256=hlb9EYxKWcR_qdW2O89CgNDdciR9Isi743JU_1gD8j4,1927
|
|
@@ -8,7 +8,7 @@ jarvis/jarvis_agent/event_bus.py,sha256=pRdfk7d0OG18K6yNfWlCvAh_dW5p9sBtT2Yc3jGm
|
|
|
8
8
|
jarvis/jarvis_agent/events.py,sha256=rmFQ37PasImCh7OCdCzNBvubk-kHwcUiYLgzmL0t0_4,3689
|
|
9
9
|
jarvis/jarvis_agent/file_context_handler.py,sha256=2MPn_O_2llX39meFg272Cjk3wMPn5nmgbGMUyX06YQo,2113
|
|
10
10
|
jarvis/jarvis_agent/file_methodology_manager.py,sha256=LnhgTx5xQXCBK8esjCkFbgFm9iEyFX7TryUlC40Kzpw,4428
|
|
11
|
-
jarvis/jarvis_agent/jarvis.py,sha256=
|
|
11
|
+
jarvis/jarvis_agent/jarvis.py,sha256=eZpONtA7mFZtG6v-xQeVElXAWtl3ZZrrp4jgvtlK96c,48925
|
|
12
12
|
jarvis/jarvis_agent/main.py,sha256=IgS7d3rng2vFlu983OUeCkOAosKjFAn1sFCk3gT9J9Q,4563
|
|
13
13
|
jarvis/jarvis_agent/memory_manager.py,sha256=WSyUffx9xTmkcj4QrSLEfsjI3sTMUwZmkkC9_N_gTjo,8042
|
|
14
14
|
jarvis/jarvis_agent/methodology_share_manager.py,sha256=AB_J9BwRgaeENQfL6bH83FOLeLrgHhppMb7psJNevKs,6874
|
|
@@ -20,11 +20,12 @@ jarvis/jarvis_agent/protocols.py,sha256=YFJaC9MHi7JfLzmvlyotJDjiCO4Z07XJXy1gKhVd
|
|
|
20
20
|
jarvis/jarvis_agent/rewrite_file_handler.py,sha256=FVSrfrC115_cGvdPW9RIn3A-gQAhok7GyyBfnOFdpXs,5276
|
|
21
21
|
jarvis/jarvis_agent/run_loop.py,sha256=iGfa28J2K6I07k6p66O3WJFSk9z4uOarqe6CLqALIsk,6167
|
|
22
22
|
jarvis/jarvis_agent/session_manager.py,sha256=5wVcaZGwJ9cEKTQglSbqyxUDJ2fI5KxYN8C8L16UWLw,3024
|
|
23
|
-
jarvis/jarvis_agent/share_manager.py,sha256=
|
|
23
|
+
jarvis/jarvis_agent/share_manager.py,sha256=Nl7zvy5PbcYAPXUgfnvatoUB0V4sIQOt61LyYkp5-2w,9127
|
|
24
24
|
jarvis/jarvis_agent/shell_input_handler.py,sha256=wiAPjB-9uTkcLszbO5dlOUwIfaeR39RgRcZhahIGqoA,2018
|
|
25
25
|
jarvis/jarvis_agent/stdio_redirect.py,sha256=xqF-sENitpefCT3TA9oRwATFqbDrU2dvqM-UiMZRhbE,9944
|
|
26
26
|
jarvis/jarvis_agent/task_analyzer.py,sha256=JXc-63hnTD7oSX-nIfRcgxqCMhh4fM4QYVc7C1gp--M,7813
|
|
27
27
|
jarvis/jarvis_agent/task_manager.py,sha256=lme_aN8vaF_a4Tvv2kaSEnWATy8RPSjogTxeLnEYZdg,6504
|
|
28
|
+
jarvis/jarvis_agent/task_planner.py,sha256=MaoyyMkpbs-QmYjLZOKmNLsDXmlKwM89_UaqGI1geGw,10600
|
|
28
29
|
jarvis/jarvis_agent/tool_executor.py,sha256=k73cKhZEZpljvui4ZxALlFEIE-iLzJ32Softsmiwzqk,1896
|
|
29
30
|
jarvis/jarvis_agent/tool_share_manager.py,sha256=Do08FRxis0ynwR2a6iRoa6Yq0qCP8NkuhMbPrimaxMA,5169
|
|
30
31
|
jarvis/jarvis_agent/user_interaction.py,sha256=tifFN49GkO_Q80sqOTVmhxwbNWTazF3K0cr8AnnvzdU,1453
|
|
@@ -33,9 +34,9 @@ jarvis/jarvis_agent/web_bridge.py,sha256=h15PXuPWWfZynWt8bPW4BDeCpIVoIOlRXfO0je6
|
|
|
33
34
|
jarvis/jarvis_agent/web_output_sink.py,sha256=sZ6WbLZnuCdT5dS9d8msHY_g-pnj-dvML-I6uJ7-sbc,1733
|
|
34
35
|
jarvis/jarvis_agent/web_server.py,sha256=oZZy4nAOPhRWJn7K8VjBlho1F9AsvLEYiusKgipjO94,28204
|
|
35
36
|
jarvis/jarvis_code_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
|
-
jarvis/jarvis_code_agent/code_agent.py,sha256=
|
|
37
|
+
jarvis/jarvis_code_agent/code_agent.py,sha256=1jdIZUgHFoevFljoZiDOO0Zxs_oKR_vJS4-eUSTSqPY,42720
|
|
37
38
|
jarvis/jarvis_code_agent/lint.py,sha256=_qLJB_bC3PuoHG-j4EGOnYzNGO26jHlKLbkysfyQW1c,3954
|
|
38
|
-
jarvis/jarvis_code_analysis/code_review.py,sha256=
|
|
39
|
+
jarvis/jarvis_code_analysis/code_review.py,sha256=48r0UE4pmOUaRgBJIJrpPW307sKGo1rnTNkWdsqkOrY,29889
|
|
39
40
|
jarvis/jarvis_code_analysis/checklists/__init__.py,sha256=LIXAYa1sW3l7foP6kohLWnE98I_EQ0T7z5bYKHq6rJA,78
|
|
40
41
|
jarvis/jarvis_code_analysis/checklists/c_cpp.py,sha256=9t62bMqs6qTkFSio4SKkj88qyb5ZubWrw3MxJBQ4X1A,1317
|
|
41
42
|
jarvis/jarvis_code_analysis/checklists/csharp.py,sha256=ShPXrl2_UPAnGaCHAG2wLl90COG3HK2XCSr1UK2dxN4,2420
|
|
@@ -56,7 +57,7 @@ jarvis/jarvis_code_analysis/checklists/shell.py,sha256=aRFYhQQvTgbYd-uY5pc8UHIUA
|
|
|
56
57
|
jarvis/jarvis_code_analysis/checklists/sql.py,sha256=vR0T6qC7b4dURjJVAd7kSVxyvZEQXPG1Jqc2sNTGp5c,2355
|
|
57
58
|
jarvis/jarvis_code_analysis/checklists/swift.py,sha256=TPx4I6Gupvs6tSerRKmTSKEPQpOLEbH2Y7LXg1uBgxc,2566
|
|
58
59
|
jarvis/jarvis_code_analysis/checklists/web.py,sha256=25gGD7pDadZQybNFvALYxWvK0VRjGQb1NVJQElwjyk0,3943
|
|
59
|
-
jarvis/jarvis_data/config_schema.json,sha256=
|
|
60
|
+
jarvis/jarvis_data/config_schema.json,sha256=5tNhALZ61smZP7VzppWxs99LP21RY3gB1wrqemQ-xoo,15358
|
|
60
61
|
jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4,sha256=Ijkht27pm96ZW3_3OFE-7xAPtR0YyTWXoRO8_-hlsqc,1681126
|
|
61
62
|
jarvis/jarvis_git_squash/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
62
63
|
jarvis/jarvis_git_squash/main.py,sha256=BRbsEQVXwseVFKliVqV8_JPh1om6QT6dLTHw0jQ7OE0,2474
|
|
@@ -91,6 +92,16 @@ jarvis/jarvis_rag/query_rewriter.py,sha256=LGAWZ8kwH_dpquuYqc4QWC7IXmHX3SsnPSYMW
|
|
|
91
92
|
jarvis/jarvis_rag/rag_pipeline.py,sha256=aaTuxiArtVaPemWeySApw64q204JeLNXpOEtq7Adn1I,13797
|
|
92
93
|
jarvis/jarvis_rag/reranker.py,sha256=7Azc3y5fngwfPKtzZ8tx6iGKNeqC8uDy8yo8VCyLyL4,2670
|
|
93
94
|
jarvis/jarvis_rag/retriever.py,sha256=J4jO0492yHEwxJz_Cp2WP3vGHRHKj56rDyWZQ2W0XdA,18374
|
|
95
|
+
jarvis/jarvis_sec/README.md,sha256=0GpTAOAupOGEAv0juLJXEBBfaa6KL74t2nRbj0N5Mkw,7621
|
|
96
|
+
jarvis/jarvis_sec/__init__.py,sha256=SYgHZcxoV4xgjdal1S04u7QXCQJdgPpwiAxmEcK1pYg,25690
|
|
97
|
+
jarvis/jarvis_sec/cli.py,sha256=_DWWcYscLWCyIs5k7bKjXSBkQPxLbYLJKkU0QuTaeZs,3494
|
|
98
|
+
jarvis/jarvis_sec/prompts.py,sha256=ObGFNvrCtbIhsWlJHYQ5tcsTkuBlID0FozncYCv8S8k,14165
|
|
99
|
+
jarvis/jarvis_sec/report.py,sha256=5wLKqK-CDFZ2fPtwP3sGYgjAi69TKoYizyLK1cchDVA,8516
|
|
100
|
+
jarvis/jarvis_sec/types.py,sha256=_C3IHwnni3kApryP3c_UTYdvFdmlJSVXQLLefX94zl0,365
|
|
101
|
+
jarvis/jarvis_sec/workflow.py,sha256=DokD8ZBcAfyiq078OM7rmZdpWrOXAL_7ZGkLF2TOqcc,20187
|
|
102
|
+
jarvis/jarvis_sec/checkers/__init__.py,sha256=ZF7zHJS6P6cu9VE3kMc66DK7m-Ki2bmMkwkap5mm26g,786
|
|
103
|
+
jarvis/jarvis_sec/checkers/c_checker.py,sha256=ezW_-9wwzLxYEENd3HhdgDnLfJiLccJacJklTOnVXgw,53498
|
|
104
|
+
jarvis/jarvis_sec/checkers/rust_checker.py,sha256=SBobyUjN1rDzFPESZ6uif3PR3HUW6Mux2ofxeqRUJ2Q,13483
|
|
94
105
|
jarvis/jarvis_smart_shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
95
106
|
jarvis/jarvis_smart_shell/main.py,sha256=lUJPwLR9RlaaVv0lx3ojjjv5dELHOaindlsLDDkpssQ,14960
|
|
96
107
|
jarvis/jarvis_stats/__init__.py,sha256=jJzgP43nxzLbNGs8Do4Jfta1PNCJMf1Oq9YTPd6EnFM,342
|
|
@@ -108,19 +119,19 @@ jarvis/jarvis_tools/generate_new_tool.py,sha256=tJz0YtfDwyH9y00VEWw3Btqr9JCNhvtI
|
|
|
108
119
|
jarvis/jarvis_tools/methodology.py,sha256=_K4GIDUodGEma3SvNRo7Qs5rliijgNespVLyAPN35JU,5233
|
|
109
120
|
jarvis/jarvis_tools/read_code.py,sha256=F1RuO0c69t0h7CvrUGqrTyNcOCcUrFQPACc61O_YSso,6382
|
|
110
121
|
jarvis/jarvis_tools/read_webpage.py,sha256=dfyXJ9vaX-ZRbua1P5ZlaU_SlSzKkeNw-1kI_3-gxFE,5433
|
|
111
|
-
jarvis/jarvis_tools/registry.py,sha256=
|
|
122
|
+
jarvis/jarvis_tools/registry.py,sha256=KDDuaQC_Ej8nGKk2P5W7uMV22BQQx_lSf9dLrLZ6ocY,34033
|
|
112
123
|
jarvis/jarvis_tools/retrieve_memory.py,sha256=hhhGSr7jebPHICY9oEKICyI8mfqsRtKjh58qZNZApKc,8624
|
|
113
124
|
jarvis/jarvis_tools/save_memory.py,sha256=RQtNxcpU53FFv_EBjH0i0oyQ7jWubm-trD1BHuqaGjI,6985
|
|
114
125
|
jarvis/jarvis_tools/search_web.py,sha256=Hi8WBxcRH02qjOF1qcJP2qSqs3kVOKGFAARfh548Ii4,6370
|
|
115
|
-
jarvis/jarvis_tools/sub_agent.py,sha256=
|
|
116
|
-
jarvis/jarvis_tools/sub_code_agent.py,sha256=
|
|
126
|
+
jarvis/jarvis_tools/sub_agent.py,sha256=oV_-R5kAnocA3X8yrxtccGKa6UIo08_YbMQB0ozCPzU,8534
|
|
127
|
+
jarvis/jarvis_tools/sub_code_agent.py,sha256=F9iY0XgYsHJEdfMo_0UR646qYbj61t4jIUVnrq9zPuE,9479
|
|
117
128
|
jarvis/jarvis_tools/virtual_tty.py,sha256=L7-J00ARQvIa25T45Hhqg2eCBl6W2LFgqDlWMWf-7dk,25275
|
|
118
129
|
jarvis/jarvis_tools/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
119
130
|
jarvis/jarvis_tools/cli/main.py,sha256=WL2GNV7WqYl7G1-btRGvCkzDCMk4fPfNvzCrnUFVPxs,9323
|
|
120
131
|
jarvis/jarvis_utils/__init__.py,sha256=67h0ldisGlh3oK4DAeNEL2Bl_VsI3tSmfclasyVlueM,850
|
|
121
132
|
jarvis/jarvis_utils/builtin_replace_map.py,sha256=z8iAqsbZUiGFaozxG1xSu128op8udqHOeEw-GxNt4bU,1708
|
|
122
133
|
jarvis/jarvis_utils/clipboard.py,sha256=D3wzQeqg_yiH7Axs4d6MRxyNa9XxdnenH-ND2uj2WVQ,2967
|
|
123
|
-
jarvis/jarvis_utils/config.py,sha256=
|
|
134
|
+
jarvis/jarvis_utils/config.py,sha256=7aGTlZMpXC0PhZeu3WD3asBAC0hf4xlAmFep-ObwtR0,22918
|
|
124
135
|
jarvis/jarvis_utils/embedding.py,sha256=x6mrkL7Bc3qgfuBDsjc4fg4nKG8ofGxVLVVydbsb8PY,2838
|
|
125
136
|
jarvis/jarvis_utils/file_processors.py,sha256=XiM248SHS7lLgQDCbORVFWqinbVDUawYxWDOsLXDxP8,3043
|
|
126
137
|
jarvis/jarvis_utils/fzf.py,sha256=vCs0Uh5dUqGbWzXn2JCtLLCOYE2B39ZNdNveR9PK4DA,1681
|
|
@@ -128,13 +139,13 @@ jarvis/jarvis_utils/git_utils.py,sha256=zxjdxbFb_X6aYo-w1fbMx3d2n1ScbmmaAYlE3wGa
|
|
|
128
139
|
jarvis/jarvis_utils/globals.py,sha256=7Xvf9HY6jYJL4vSD1F1WCoxHkHCAyltJUYt4V9gGVU4,8865
|
|
129
140
|
jarvis/jarvis_utils/http.py,sha256=eRhV3-GYuWmQ0ogq9di9WMlQkFcVb1zGCrySnOgT1x0,4392
|
|
130
141
|
jarvis/jarvis_utils/input.py,sha256=4VXpUZoAocW1mldlZd4bmXI8a_CmcQj7IPLBNgNLGSI,40045
|
|
131
|
-
jarvis/jarvis_utils/methodology.py,sha256=
|
|
142
|
+
jarvis/jarvis_utils/methodology.py,sha256=YuuKBjr58cu8QWcniU7QVlEM9Cem6wo4IYcq1iwSDMw,13158
|
|
132
143
|
jarvis/jarvis_utils/output.py,sha256=y2fVcao_2ZowFl0IxUrJZCi8T6ZM0z-iPzpk8T8eLxc,13623
|
|
133
144
|
jarvis/jarvis_utils/tag.py,sha256=f211opbbbTcSyzCDwuIK_oCnKhXPNK-RknYyGzY1yD0,431
|
|
134
|
-
jarvis/jarvis_utils/utils.py,sha256=
|
|
135
|
-
jarvis_ai_assistant-0.
|
|
136
|
-
jarvis_ai_assistant-0.
|
|
137
|
-
jarvis_ai_assistant-0.
|
|
138
|
-
jarvis_ai_assistant-0.
|
|
139
|
-
jarvis_ai_assistant-0.
|
|
140
|
-
jarvis_ai_assistant-0.
|
|
145
|
+
jarvis/jarvis_utils/utils.py,sha256=bN7HxVBs3Hoa8xM4NtOaKXpSm7WbhwwRyU4jE0v8NjY,78702
|
|
146
|
+
jarvis_ai_assistant-0.5.1.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
|
|
147
|
+
jarvis_ai_assistant-0.5.1.dist-info/METADATA,sha256=DeO39HTIYe-SziDd5J0lWoiPuADScAqzRdC7hIgiL6o,18751
|
|
148
|
+
jarvis_ai_assistant-0.5.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
149
|
+
jarvis_ai_assistant-0.5.1.dist-info/entry_points.txt,sha256=wS5YtI-Patr7PIB_DaKzlbDuQ2cDmQSDljA6psIkjbM,1469
|
|
150
|
+
jarvis_ai_assistant-0.5.1.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
|
|
151
|
+
jarvis_ai_assistant-0.5.1.dist-info/RECORD,,
|
{jarvis_ai_assistant-0.4.2.dist-info → jarvis_ai_assistant-0.5.1.dist-info}/entry_points.txt
RENAMED
|
@@ -11,6 +11,7 @@ jarvis-methodology = jarvis.jarvis_methodology.main:main
|
|
|
11
11
|
jarvis-multi-agent = jarvis.jarvis_multi_agent.main:main
|
|
12
12
|
jarvis-platform-manager = jarvis.jarvis_platform_manager.main:main
|
|
13
13
|
jarvis-rag = jarvis.jarvis_rag.cli:main
|
|
14
|
+
jarvis-sec = jarvis.jarvis_sec.cli:main
|
|
14
15
|
jarvis-smart-shell = jarvis.jarvis_smart_shell.main:main
|
|
15
16
|
jarvis-stats = jarvis.jarvis_stats.cli:main
|
|
16
17
|
jarvis-tool = jarvis.jarvis_tools.cli.main:main
|
|
@@ -23,6 +24,7 @@ jma = jarvis.jarvis_multi_agent.main:main
|
|
|
23
24
|
jmo = jarvis.jarvis_memory_organizer.memory_organizer:main
|
|
24
25
|
jpm = jarvis.jarvis_platform_manager.main:main
|
|
25
26
|
jrg = jarvis.jarvis_rag.cli:main
|
|
27
|
+
jsec = jarvis.jarvis_sec.cli:main
|
|
26
28
|
jss = jarvis.jarvis_smart_shell.main:main
|
|
27
29
|
jst = jarvis.jarvis_stats.cli:main
|
|
28
30
|
jt = jarvis.jarvis_tools.cli.main:main
|
|
File without changes
|
{jarvis_ai_assistant-0.4.2.dist-info → jarvis_ai_assistant-0.5.1.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|