jarvis-ai-assistant 0.3.26__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.
Files changed (33) hide show
  1. jarvis/__init__.py +1 -1
  2. jarvis/jarvis_agent/__init__.py +290 -173
  3. jarvis/jarvis_agent/config.py +92 -0
  4. jarvis/jarvis_agent/event_bus.py +48 -0
  5. jarvis/jarvis_agent/jarvis.py +69 -35
  6. jarvis/jarvis_agent/memory_manager.py +70 -2
  7. jarvis/jarvis_agent/prompt_manager.py +82 -0
  8. jarvis/jarvis_agent/run_loop.py +130 -0
  9. jarvis/jarvis_agent/task_analyzer.py +88 -9
  10. jarvis/jarvis_agent/task_manager.py +26 -0
  11. jarvis/jarvis_agent/user_interaction.py +42 -0
  12. jarvis/jarvis_code_agent/code_agent.py +18 -3
  13. jarvis/jarvis_code_agent/lint.py +5 -5
  14. jarvis/jarvis_data/config_schema.json +7 -6
  15. jarvis/jarvis_git_squash/main.py +6 -1
  16. jarvis/jarvis_git_utils/git_commiter.py +38 -12
  17. jarvis/jarvis_platform/base.py +4 -5
  18. jarvis/jarvis_platform_manager/main.py +28 -11
  19. jarvis/jarvis_stats/cli.py +13 -32
  20. jarvis/jarvis_stats/stats.py +179 -51
  21. jarvis/jarvis_tools/registry.py +15 -0
  22. jarvis/jarvis_tools/sub_agent.py +94 -84
  23. jarvis/jarvis_tools/sub_code_agent.py +12 -6
  24. jarvis/jarvis_utils/config.py +14 -0
  25. jarvis/jarvis_utils/fzf.py +56 -0
  26. jarvis/jarvis_utils/input.py +0 -3
  27. jarvis/jarvis_utils/utils.py +56 -8
  28. {jarvis_ai_assistant-0.3.26.dist-info → jarvis_ai_assistant-0.3.27.dist-info}/METADATA +2 -3
  29. {jarvis_ai_assistant-0.3.26.dist-info → jarvis_ai_assistant-0.3.27.dist-info}/RECORD +33 -27
  30. {jarvis_ai_assistant-0.3.26.dist-info → jarvis_ai_assistant-0.3.27.dist-info}/WHEEL +0 -0
  31. {jarvis_ai_assistant-0.3.26.dist-info → jarvis_ai_assistant-0.3.27.dist-info}/entry_points.txt +0 -0
  32. {jarvis_ai_assistant-0.3.26.dist-info → jarvis_ai_assistant-0.3.27.dist-info}/licenses/LICENSE +0 -0
  33. {jarvis_ai_assistant-0.3.26.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
@@ -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", " • "),
@@ -1179,6 +1179,46 @@ def _collect_optional_config_interactively(
1179
1179
  or changed
1180
1180
  )
1181
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
+
1182
1222
  # Git 提交提示词(可选)
1183
1223
  changed = (
1184
1224
  _ask_and_set_optional_str(
@@ -1498,34 +1538,39 @@ def _read_old_config_file(config_file):
1498
1538
  )
1499
1539
 
1500
1540
 
1501
- 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:
1502
1542
  """循环执行函数直到成功(累计日志后统一打印,避免逐次加框)
1503
1543
 
1504
1544
  参数:
1505
1545
  func -- 要执行的函数
1506
1546
  sleep_time -- 每次失败后的等待时间(秒)
1547
+ max_retries -- 最大重试次数,默认5次
1507
1548
 
1508
1549
  返回:
1509
1550
  函数执行结果
1510
1551
  """
1511
1552
  result: Any = None
1512
- while True:
1553
+ retry_count = 0
1554
+ while retry_count < max_retries:
1513
1555
  try:
1514
1556
  result = func()
1515
1557
  break
1516
1558
  except Exception:
1517
- PrettyOutput.print(f"重试中,等待 {sleep_time}s...", OutputType.WARNING)
1518
- time.sleep(sleep_time)
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)
1519
1563
  continue
1520
1564
  return result
1521
1565
 
1522
1566
 
1523
- 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:
1524
1568
  """循环执行函数直到返回True(累计日志后统一打印,避免逐次加框)
1525
1569
 
1526
1570
  参数:
1527
1571
  func: 要执行的函数,必须返回布尔值
1528
1572
  sleep_time: 每次失败后的等待时间(秒)
1573
+ max_retries: 最大重试次数,默认5次
1529
1574
 
1530
1575
  返回:
1531
1576
  函数最终返回的True值
@@ -1535,12 +1580,15 @@ def while_true(func: Callable[[], bool], sleep_time: float = 0.1) -> Any:
1535
1580
  不捕获异常,异常会直接抛出
1536
1581
  """
1537
1582
  ret: bool = False
1538
- while True:
1583
+ retry_count = 0
1584
+ while retry_count < max_retries:
1539
1585
  ret = func()
1540
1586
  if ret:
1541
1587
  break
1542
- PrettyOutput.print(f"重试中,等待 {sleep_time}s...", OutputType.WARNING)
1543
- time.sleep(sleep_time)
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)
1544
1592
  return ret
1545
1593
 
1546
1594
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.3.26
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: black; extra == "dev"
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=iYbIKGj1PIzlv-YretRu86LOVz9abIwPUZ9co3CM1oo,74
2
- jarvis/jarvis_agent/__init__.py,sha256=S62A_Mki77-RIli_9uNJvz27wRlu2LL3EsFuZjKBybw,37702
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=UNI4PoJpf4L7wp9y8-A6AfMXMQv7ikRk2YXmN5pRKUc,22383
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=Ckt6wmXOduu97jfyWQbRDmNH6yX11XzLW2nMTeVhFeY,5316
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=HeGr2_aCNoZpsm5Am05yEXtVNUUk7bE7XIIcJdltiTE,4666
20
- jarvis/jarvis_agent/task_manager.py,sha256=7OpLHLwBmxRFN37CCoVOPCUxjyo3dtE3sJ5ojD28ThA,5033
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=7b9bSQxKIYWpKCLqbQUjSxr16GhGbVCzKSIaxpOHptM,31363
25
- jarvis/jarvis_code_agent/lint.py,sha256=LZPsfyZPMo7Wm7LN4osZocuNJwZx1ojacO3MlF870x8,4009
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=_O_FQwmEldoGpTJ0EjyDjI6Zc2wkyr_7yVn00WA_Qf4,12575
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=6PECdAbTbrsJBRLK1pXBh4hdJ_LADh-XXSic1xJi97E,2255
51
- jarvis/jarvis_git_utils/git_commiter.py,sha256=mtrZpdq42567dnX-Q8OJ6ZtSRaqRDDDQxHAGRMXdej0,14559
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=5RLs5d4iYQ6PdSgKXj9idoCkln68Kmrv7-Sh7HBGbyw,13434
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,7 +73,7 @@ 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=tU25oVQzEFPB8aOqPec8SgnxsapCFuHBkYubxiutxqA,19662
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
@@ -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=iWuhA1AQAIOccXVUaO-k87T2b10s08wyeKAY5lUQ4og,12702
86
- jarvis/jarvis_stats/stats.py,sha256=AiQck1ma78YGR4hjT-leab-6GRMIQQmCp7wcG5SRKWw,19379
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=BFo5ih929IKvgIKHB3_neXco6JLFqLqQw9FTYpOgcnI,32016
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=GTn6JXIsomHw9M46HTybIYgyFHUc72AFrbI4l9cwUro,7983
106
- jarvis/jarvis_tools/sub_code_agent.py,sha256=JSQKJNBO3zQsCNk3x-CPzqTIRPeOt8rvP4WPC-JQOwI,7848
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=44MIH-CLRYpv8ltpirnq5_EccE1fVVGQciCiWRuDYmo,18824
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
121
+ jarvis/jarvis_utils/fzf.py,sha256=92u4w5pd6cyxBJlmyw3rXNyxToSAalK79m_aEBmkgV0,1590
116
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=tGIr3-t46gT3dD-Z6Bcb5xagIifM62cAHRkk3w9p7_Q,36635
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=npqPuSVqCYFmcrIK_J-MqmMlRxZ9oZDbps9bT_tNI-E,63205
124
- jarvis_ai_assistant-0.3.26.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
125
- jarvis_ai_assistant-0.3.26.dist-info/METADATA,sha256=AFxKVvM2rsHE0Y18QCxQ9bddXdJKcmk0t2S1NWKaXw4,18790
126
- jarvis_ai_assistant-0.3.26.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
127
- jarvis_ai_assistant-0.3.26.dist-info/entry_points.txt,sha256=4GcWKFxRJD-QU14gw_3ZaW4KuEVxOcZK9i270rwPdjA,1395
128
- jarvis_ai_assistant-0.3.26.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
129
- jarvis_ai_assistant-0.3.26.dist-info/RECORD,,
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,,