jarvis-ai-assistant 0.3.30__py3-none-any.whl → 0.3.32__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 +22 -2
- jarvis/jarvis_agent/edit_file_handler.py +348 -83
- jarvis/jarvis_agent/jarvis.py +83 -0
- jarvis/jarvis_code_agent/code_agent.py +88 -6
- jarvis/jarvis_data/config_schema.json +38 -4
- jarvis/jarvis_platform/openai.py +26 -1
- jarvis/jarvis_tools/edit_file.py +39 -10
- jarvis/jarvis_tools/read_code.py +12 -11
- jarvis/jarvis_tools/registry.py +16 -15
- jarvis/jarvis_utils/config.py +17 -0
- jarvis/jarvis_utils/embedding.py +3 -0
- jarvis/jarvis_utils/git_utils.py +14 -2
- jarvis/jarvis_utils/input.py +1 -1
- jarvis/jarvis_utils/utils.py +63 -9
- {jarvis_ai_assistant-0.3.30.dist-info → jarvis_ai_assistant-0.3.32.dist-info}/METADATA +1 -1
- {jarvis_ai_assistant-0.3.30.dist-info → jarvis_ai_assistant-0.3.32.dist-info}/RECORD +21 -21
- {jarvis_ai_assistant-0.3.30.dist-info → jarvis_ai_assistant-0.3.32.dist-info}/WHEEL +0 -0
- {jarvis_ai_assistant-0.3.30.dist-info → jarvis_ai_assistant-0.3.32.dist-info}/entry_points.txt +0 -0
- {jarvis_ai_assistant-0.3.30.dist-info → jarvis_ai_assistant-0.3.32.dist-info}/licenses/LICENSE +0 -0
- {jarvis_ai_assistant-0.3.30.dist-info → jarvis_ai_assistant-0.3.32.dist-info}/top_level.txt +0 -0
jarvis/jarvis_utils/utils.py
CHANGED
@@ -679,7 +679,7 @@ def _show_usage_stats(welcome_str: str) -> None:
|
|
679
679
|
|
680
680
|
# 愿景 Panel
|
681
681
|
vision_text = Text(
|
682
|
-
"
|
682
|
+
"让开发者与AI成为共生伙伴",
|
683
683
|
justify="center",
|
684
684
|
style="italic",
|
685
685
|
)
|
@@ -694,7 +694,7 @@ def _show_usage_stats(welcome_str: str) -> None:
|
|
694
694
|
|
695
695
|
# 使命 Panel
|
696
696
|
mission_text = Text(
|
697
|
-
"
|
697
|
+
"让灵感高效落地为代码与行动",
|
698
698
|
justify="center",
|
699
699
|
style="italic",
|
700
700
|
)
|
@@ -1142,11 +1142,17 @@ def _collect_optional_config_interactively(
|
|
1142
1142
|
)
|
1143
1143
|
|
1144
1144
|
# 新增的配置项交互(通用体验相关)
|
1145
|
+
# 根据平台统一默认值:Windows下为False,其它平台为True(与config.get_pretty_output一致)
|
1146
|
+
try:
|
1147
|
+
import platform as _platform_mod
|
1148
|
+
_default_pretty = False if _platform_mod.system() == "Windows" else True
|
1149
|
+
except Exception:
|
1150
|
+
_default_pretty = True
|
1145
1151
|
changed = (
|
1146
1152
|
_ask_and_set(
|
1147
1153
|
"JARVIS_PRETTY_OUTPUT",
|
1148
1154
|
"是否启用更美观的终端输出(Pretty Output)?",
|
1149
|
-
|
1155
|
+
_default_pretty,
|
1150
1156
|
"bool",
|
1151
1157
|
)
|
1152
1158
|
or changed
|
@@ -1200,7 +1206,7 @@ def _collect_optional_config_interactively(
|
|
1200
1206
|
_ask_and_set(
|
1201
1207
|
"JARVIS_FORCE_SAVE_MEMORY",
|
1202
1208
|
"是否强制保存会话记忆?",
|
1203
|
-
|
1209
|
+
False,
|
1204
1210
|
"bool",
|
1205
1211
|
)
|
1206
1212
|
or changed
|
@@ -1330,6 +1336,38 @@ def _collect_optional_config_interactively(
|
|
1330
1336
|
|
1331
1337
|
|
1332
1338
|
|
1339
|
+
new_mode = get_choice(
|
1340
|
+
tip,
|
1341
|
+
choices,
|
1342
|
+
)
|
1343
|
+
|
1344
|
+
if new_mode == current_mode:
|
1345
|
+
return False
|
1346
|
+
|
1347
|
+
config_data[_key] = new_mode
|
1348
|
+
return True
|
1349
|
+
except Exception:
|
1350
|
+
return False
|
1351
|
+
|
1352
|
+
def _ask_patch_format_mode() -> bool:
|
1353
|
+
try:
|
1354
|
+
_key = "JARVIS_PATCH_FORMAT"
|
1355
|
+
if not ask_all and _key in config_data:
|
1356
|
+
return False
|
1357
|
+
|
1358
|
+
from jarvis.jarvis_utils.input import get_choice
|
1359
|
+
from jarvis.jarvis_utils.config import get_patch_format
|
1360
|
+
|
1361
|
+
current_mode = config_data.get(_key, get_patch_format())
|
1362
|
+
choices = ["all", "search", "search_range"]
|
1363
|
+
tip = (
|
1364
|
+
"请选择补丁格式处理模式 (JARVIS_PATCH_FORMAT):\n"
|
1365
|
+
"该设置影响 edit_file_handler 在处理补丁时允许的匹配方式。\n"
|
1366
|
+
" - all: 同时支持 SEARCH 与 SEARCH_START/SEARCH_END 两种模式(默认)。\n"
|
1367
|
+
" - search: 仅允许精确片段匹配(SEARCH)。更稳定,适合较弱模型或严格控制改动。\n"
|
1368
|
+
" - search_range: 仅允许范围匹配(SEARCH_START/SEARCH_END)。更灵活,适合较强模型和块内细粒度修改。"
|
1369
|
+
)
|
1370
|
+
|
1333
1371
|
new_mode = get_choice(
|
1334
1372
|
tip,
|
1335
1373
|
choices,
|
@@ -1344,6 +1382,7 @@ def _collect_optional_config_interactively(
|
|
1344
1382
|
return False
|
1345
1383
|
|
1346
1384
|
changed = _ask_git_check_mode() or changed
|
1385
|
+
changed = _ask_patch_format_mode() or changed
|
1347
1386
|
|
1348
1387
|
# Git 提交提示词(可选)
|
1349
1388
|
changed = (
|
@@ -1680,11 +1719,11 @@ def while_success(func: Callable[[], Any], sleep_time: float = 0.1, max_retries:
|
|
1680
1719
|
try:
|
1681
1720
|
result = func()
|
1682
1721
|
break
|
1683
|
-
except Exception:
|
1722
|
+
except Exception as e:
|
1684
1723
|
retry_count += 1
|
1685
1724
|
if retry_count < max_retries:
|
1686
1725
|
PrettyOutput.print(
|
1687
|
-
f"
|
1726
|
+
f"发生异常:\n{e}\n重试中 ({retry_count}/{max_retries}),等待 {sleep_time}s...",
|
1688
1727
|
OutputType.WARNING,
|
1689
1728
|
)
|
1690
1729
|
time.sleep(sleep_time)
|
@@ -1730,9 +1769,22 @@ def get_file_md5(filepath: str) -> str:
|
|
1730
1769
|
filepath: 要计算哈希的文件路径
|
1731
1770
|
|
1732
1771
|
返回:
|
1733
|
-
str: 文件内容的MD5
|
1772
|
+
str: 文件内容的MD5哈希值(为降低内存占用,仅读取前100MB进行计算)
|
1734
1773
|
"""
|
1735
|
-
|
1774
|
+
# 采用流式读取,避免一次性加载100MB到内存
|
1775
|
+
h = hashlib.md5()
|
1776
|
+
max_bytes = 100 * 1024 * 1024 # 与原实现保持一致:仅读取前100MB
|
1777
|
+
buf_size = 8 * 1024 * 1024 # 8MB缓冲
|
1778
|
+
read_bytes = 0
|
1779
|
+
with open(filepath, "rb") as f:
|
1780
|
+
while read_bytes < max_bytes:
|
1781
|
+
to_read = min(buf_size, max_bytes - read_bytes)
|
1782
|
+
chunk = f.read(to_read)
|
1783
|
+
if not chunk:
|
1784
|
+
break
|
1785
|
+
h.update(chunk)
|
1786
|
+
read_bytes += len(chunk)
|
1787
|
+
return h.hexdigest()
|
1736
1788
|
|
1737
1789
|
|
1738
1790
|
def get_file_line_count(filename: str) -> int:
|
@@ -1745,7 +1797,9 @@ def get_file_line_count(filename: str) -> int:
|
|
1745
1797
|
int: 文件中的行数,如果文件无法读取则返回0
|
1746
1798
|
"""
|
1747
1799
|
try:
|
1748
|
-
|
1800
|
+
# 使用流式逐行计数,避免将整个文件读入内存
|
1801
|
+
with open(filename, "r", encoding="utf-8", errors="ignore") as f:
|
1802
|
+
return sum(1 for _ in f)
|
1749
1803
|
except Exception:
|
1750
1804
|
return 0
|
1751
1805
|
|
@@ -1,14 +1,14 @@
|
|
1
|
-
jarvis/__init__.py,sha256=
|
2
|
-
jarvis/jarvis_agent/__init__.py,sha256=
|
1
|
+
jarvis/__init__.py,sha256=FrY3n45NnZ384YSR1UaQF1-ryuCK5R3PbKYXg7dMa7I,74
|
2
|
+
jarvis/jarvis_agent/__init__.py,sha256=Mp0lcivL99cL2eIjHz-D1C86XMOhJkFYtnQcJoflfH4,49033
|
3
3
|
jarvis/jarvis_agent/agent_manager.py,sha256=qNcMy5Xc5ZT26JfczBg4b4D5udKVHSFsCFjlpbIdmPo,3076
|
4
4
|
jarvis/jarvis_agent/builtin_input_handler.py,sha256=wS-FqpT3pIXwHn1dfL3SpXonUKWgVThbQueUIeyRc2U,2917
|
5
5
|
jarvis/jarvis_agent/config.py,sha256=Ni1aTVzmdERJ89A1jsC21Tsys_9MM-TTx1w5XwxyEwA,3130
|
6
6
|
jarvis/jarvis_agent/config_editor.py,sha256=hlb9EYxKWcR_qdW2O89CgNDdciR9Isi743JU_1gD8j4,1927
|
7
|
-
jarvis/jarvis_agent/edit_file_handler.py,sha256=
|
7
|
+
jarvis/jarvis_agent/edit_file_handler.py,sha256=7xkEvlER6pNHtxyGad_ol23NeDGsYMunq4XmTAx86kw,24722
|
8
8
|
jarvis/jarvis_agent/event_bus.py,sha256=pRdfk7d0OG18K6yNfWlCvAh_dW5p9sBtT2Yc3jGmzgo,1519
|
9
9
|
jarvis/jarvis_agent/events.py,sha256=rmFQ37PasImCh7OCdCzNBvubk-kHwcUiYLgzmL0t0_4,3689
|
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=20xdLdAaiOo5nriIt3ZkRzOBW_UTrFrPvwjfDp62tKU,27083
|
12
12
|
jarvis/jarvis_agent/main.py,sha256=bFcwXWC6O05jQiXy6ED_bHjdjDo5VwV_i1BoBEAzgP0,3336
|
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
|
@@ -28,7 +28,7 @@ jarvis/jarvis_agent/tool_share_manager.py,sha256=Do08FRxis0ynwR2a6iRoa6Yq0qCP8Nk
|
|
28
28
|
jarvis/jarvis_agent/user_interaction.py,sha256=tifFN49GkO_Q80sqOTVmhxwbNWTazF3K0cr8AnnvzdU,1453
|
29
29
|
jarvis/jarvis_agent/utils.py,sha256=ldgfuNTNu4JU7Y1LtystBl85OC6H3A4OMycg0XBt_Cs,1615
|
30
30
|
jarvis/jarvis_code_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
31
|
-
jarvis/jarvis_code_agent/code_agent.py,sha256=
|
31
|
+
jarvis/jarvis_code_agent/code_agent.py,sha256=nCe0GP6mIzAjJBn2aFqVrDRSjMHnenkDrSoaM0VY87U,36576
|
32
32
|
jarvis/jarvis_code_agent/lint.py,sha256=_qLJB_bC3PuoHG-j4EGOnYzNGO26jHlKLbkysfyQW1c,3954
|
33
33
|
jarvis/jarvis_code_analysis/code_review.py,sha256=Z0JsvyVPPHPm6rfo4fqaQr7CdZKIllo9jqStzV0i_-o,34470
|
34
34
|
jarvis/jarvis_code_analysis/checklists/__init__.py,sha256=LIXAYa1sW3l7foP6kohLWnE98I_EQ0T7z5bYKHq6rJA,78
|
@@ -51,7 +51,7 @@ jarvis/jarvis_code_analysis/checklists/shell.py,sha256=aRFYhQQvTgbYd-uY5pc8UHIUA
|
|
51
51
|
jarvis/jarvis_code_analysis/checklists/sql.py,sha256=vR0T6qC7b4dURjJVAd7kSVxyvZEQXPG1Jqc2sNTGp5c,2355
|
52
52
|
jarvis/jarvis_code_analysis/checklists/swift.py,sha256=TPx4I6Gupvs6tSerRKmTSKEPQpOLEbH2Y7LXg1uBgxc,2566
|
53
53
|
jarvis/jarvis_code_analysis/checklists/web.py,sha256=25gGD7pDadZQybNFvALYxWvK0VRjGQb1NVJQElwjyk0,3943
|
54
|
-
jarvis/jarvis_data/config_schema.json,sha256=
|
54
|
+
jarvis/jarvis_data/config_schema.json,sha256=q5kXr067yPYcebEWyhqFBmfX1KgyjTAr_hCku__zSZ4,14166
|
55
55
|
jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4,sha256=Ijkht27pm96ZW3_3OFE-7xAPtR0YyTWXoRO8_-hlsqc,1681126
|
56
56
|
jarvis/jarvis_git_squash/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
57
57
|
jarvis/jarvis_git_squash/main.py,sha256=BRbsEQVXwseVFKliVqV8_JPh1om6QT6dLTHw0jQ7OE0,2474
|
@@ -70,7 +70,7 @@ jarvis/jarvis_platform/ai8.py,sha256=g8JkqPGs9SEbqstNMCc5rCHO0QcPHX9LNvb7HMWwB-Q
|
|
70
70
|
jarvis/jarvis_platform/base.py,sha256=u1XvfE83-S-3W_euMrMaaa8NdXeIHlo7VSxLBbN3K-Y,13504
|
71
71
|
jarvis/jarvis_platform/human.py,sha256=jWjW8prEag79e6ddqTPV4nz_Gz6zFBfO4a1EbvP8QWA,4908
|
72
72
|
jarvis/jarvis_platform/kimi.py,sha256=KLsf9udAsPRMbQ2JkBeiAlXkupCBwdtMaJ-hpH4Jdkc,15711
|
73
|
-
jarvis/jarvis_platform/openai.py,sha256=
|
73
|
+
jarvis/jarvis_platform/openai.py,sha256=4YapmkmJmPGfrjktORcIejlB98b83Wsi_48zjBymHAc,9500
|
74
74
|
jarvis/jarvis_platform/registry.py,sha256=YqaFM2LXcHvqMQrTEQ_cVo8V-wQ8HhOeSdC8DdjvC00,8045
|
75
75
|
jarvis/jarvis_platform/tongyi.py,sha256=QQHDn-kNcb_UH-B49lVIQTlHzYd_O8CFWN7SZqy38S4,23456
|
76
76
|
jarvis/jarvis_platform/yuanbao.py,sha256=jlttNWq-Bq9JLxaI6MOsxKZaNEXF1EfVVB7mjtVcYMA,23954
|
@@ -97,14 +97,14 @@ jarvis/jarvis_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
|
|
97
97
|
jarvis/jarvis_tools/ask_user.py,sha256=M6DdLNryCE8y1JcdZHEifUgZkPUEPNKc-zDW5p0Mb1k,2029
|
98
98
|
jarvis/jarvis_tools/base.py,sha256=tFZkRlbV_a-pbjM-ci9AYmXVJm__FXuzVWKbQEyz4Ao,1639
|
99
99
|
jarvis/jarvis_tools/clear_memory.py,sha256=8DOq6dHLemfKTJqu227PWBIp8Iu5K7EXwINzL8DYk8M,8205
|
100
|
-
jarvis/jarvis_tools/edit_file.py,sha256=
|
100
|
+
jarvis/jarvis_tools/edit_file.py,sha256=UcJNTVCDEmRaQsN_7_Ip2LjrTDm4wWzj2deuZHiBvLI,9026
|
101
101
|
jarvis/jarvis_tools/execute_script.py,sha256=oDOMn8GcV6qKP4d0RFT6xbHGTazRmaOlp-h_e_Wj80c,6227
|
102
102
|
jarvis/jarvis_tools/file_analyzer.py,sha256=jzVb8fAJn3dWwpCiYH-Wuxva4kpHqBB2_V3x3mzY0Gs,4158
|
103
103
|
jarvis/jarvis_tools/generate_new_tool.py,sha256=tJz0YtfDwyH9y00VEWw3Btqr9JCNhvtI8BN9i5hYk_M,8560
|
104
104
|
jarvis/jarvis_tools/methodology.py,sha256=_K4GIDUodGEma3SvNRo7Qs5rliijgNespVLyAPN35JU,5233
|
105
|
-
jarvis/jarvis_tools/read_code.py,sha256=
|
105
|
+
jarvis/jarvis_tools/read_code.py,sha256=F1RuO0c69t0h7CvrUGqrTyNcOCcUrFQPACc61O_YSso,6382
|
106
106
|
jarvis/jarvis_tools/read_webpage.py,sha256=YTmoalY8y-jdQuoj9IL6ZjXPOevUj2P_9arJngPhbUY,5317
|
107
|
-
jarvis/jarvis_tools/registry.py,sha256=
|
107
|
+
jarvis/jarvis_tools/registry.py,sha256=yVXBrJ7plyn7Dr3dD6mPmgd6eiBftmd19Cc84-PwVN8,33312
|
108
108
|
jarvis/jarvis_tools/retrieve_memory.py,sha256=hhhGSr7jebPHICY9oEKICyI8mfqsRtKjh58qZNZApKc,8624
|
109
109
|
jarvis/jarvis_tools/rewrite_file.py,sha256=CuvjWPTbUaPbex9FKSmw_Ru4r6R-CX_3vqTqCTp8nHA,6959
|
110
110
|
jarvis/jarvis_tools/save_memory.py,sha256=RQtNxcpU53FFv_EBjH0i0oyQ7jWubm-trD1BHuqaGjI,6985
|
@@ -117,21 +117,21 @@ jarvis/jarvis_tools/cli/main.py,sha256=WL2GNV7WqYl7G1-btRGvCkzDCMk4fPfNvzCrnUFVP
|
|
117
117
|
jarvis/jarvis_utils/__init__.py,sha256=67h0ldisGlh3oK4DAeNEL2Bl_VsI3tSmfclasyVlueM,850
|
118
118
|
jarvis/jarvis_utils/builtin_replace_map.py,sha256=z8iAqsbZUiGFaozxG1xSu128op8udqHOeEw-GxNt4bU,1708
|
119
119
|
jarvis/jarvis_utils/clipboard.py,sha256=D3wzQeqg_yiH7Axs4d6MRxyNa9XxdnenH-ND2uj2WVQ,2967
|
120
|
-
jarvis/jarvis_utils/config.py,sha256=
|
121
|
-
jarvis/jarvis_utils/embedding.py,sha256=
|
120
|
+
jarvis/jarvis_utils/config.py,sha256=AbDfL6hBpD6G_cRlr_bOAXECsj_vIq9tHXgkbsBIv5E,21119
|
121
|
+
jarvis/jarvis_utils/embedding.py,sha256=x6mrkL7Bc3qgfuBDsjc4fg4nKG8ofGxVLVVydbsb8PY,2838
|
122
122
|
jarvis/jarvis_utils/file_processors.py,sha256=XiM248SHS7lLgQDCbORVFWqinbVDUawYxWDOsLXDxP8,3043
|
123
123
|
jarvis/jarvis_utils/fzf.py,sha256=vCs0Uh5dUqGbWzXn2JCtLLCOYE2B39ZNdNveR9PK4DA,1681
|
124
|
-
jarvis/jarvis_utils/git_utils.py,sha256=
|
124
|
+
jarvis/jarvis_utils/git_utils.py,sha256=zxjdxbFb_X6aYo-w1fbMx3d2n1ScbmmaAYlE3wGaaSg,24071
|
125
125
|
jarvis/jarvis_utils/globals.py,sha256=7Xvf9HY6jYJL4vSD1F1WCoxHkHCAyltJUYt4V9gGVU4,8865
|
126
126
|
jarvis/jarvis_utils/http.py,sha256=eRhV3-GYuWmQ0ogq9di9WMlQkFcVb1zGCrySnOgT1x0,4392
|
127
|
-
jarvis/jarvis_utils/input.py,sha256=
|
127
|
+
jarvis/jarvis_utils/input.py,sha256=BT-aAaOBFsb4YeqR5ceIsa-j_MYEmsAvQqrXQSknA7c,36536
|
128
128
|
jarvis/jarvis_utils/methodology.py,sha256=z_renvRGgHiC-XTQPuN6rvrJ_ffHlwxK_b1BU_jmNAQ,12800
|
129
129
|
jarvis/jarvis_utils/output.py,sha256=y2fVcao_2ZowFl0IxUrJZCi8T6ZM0z-iPzpk8T8eLxc,13623
|
130
130
|
jarvis/jarvis_utils/tag.py,sha256=f211opbbbTcSyzCDwuIK_oCnKhXPNK-RknYyGzY1yD0,431
|
131
|
-
jarvis/jarvis_utils/utils.py,sha256=
|
132
|
-
jarvis_ai_assistant-0.3.
|
133
|
-
jarvis_ai_assistant-0.3.
|
134
|
-
jarvis_ai_assistant-0.3.
|
135
|
-
jarvis_ai_assistant-0.3.
|
136
|
-
jarvis_ai_assistant-0.3.
|
137
|
-
jarvis_ai_assistant-0.3.
|
131
|
+
jarvis/jarvis_utils/utils.py,sha256=uMtfaStxDtp2i9AFIxwtPKgSxLwQxw8Z2rXsX-ZGlis,72728
|
132
|
+
jarvis_ai_assistant-0.3.32.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
|
133
|
+
jarvis_ai_assistant-0.3.32.dist-info/METADATA,sha256=LOLHRMK96T6elM3uhhd7Isu3xNPlhJkYYtt3Ok3lGts,18752
|
134
|
+
jarvis_ai_assistant-0.3.32.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
135
|
+
jarvis_ai_assistant-0.3.32.dist-info/entry_points.txt,sha256=4GcWKFxRJD-QU14gw_3ZaW4KuEVxOcZK9i270rwPdjA,1395
|
136
|
+
jarvis_ai_assistant-0.3.32.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
|
137
|
+
jarvis_ai_assistant-0.3.32.dist-info/RECORD,,
|
File without changes
|
{jarvis_ai_assistant-0.3.30.dist-info → jarvis_ai_assistant-0.3.32.dist-info}/entry_points.txt
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.30.dist-info → jarvis_ai_assistant-0.3.32.dist-info}/licenses/LICENSE
RENAMED
File without changes
|
File without changes
|