jarvis-ai-assistant 0.3.26__py3-none-any.whl → 0.3.28__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 +303 -177
- jarvis/jarvis_agent/agent_manager.py +6 -0
- jarvis/jarvis_agent/config.py +92 -0
- jarvis/jarvis_agent/config_editor.py +1 -1
- jarvis/jarvis_agent/event_bus.py +48 -0
- jarvis/jarvis_agent/file_methodology_manager.py +1 -3
- jarvis/jarvis_agent/jarvis.py +77 -36
- jarvis/jarvis_agent/memory_manager.py +70 -3
- jarvis/jarvis_agent/prompt_manager.py +82 -0
- jarvis/jarvis_agent/run_loop.py +130 -0
- jarvis/jarvis_agent/shell_input_handler.py +1 -1
- jarvis/jarvis_agent/task_analyzer.py +89 -11
- 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_code_analysis/code_review.py +0 -1
- jarvis/jarvis_data/config_schema.json +7 -6
- jarvis/jarvis_git_squash/main.py +6 -1
- jarvis/jarvis_git_utils/git_commiter.py +51 -16
- jarvis/jarvis_mcp/stdio_mcp_client.py +1 -1
- jarvis/jarvis_memory_organizer/memory_organizer.py +2 -5
- jarvis/jarvis_methodology/main.py +0 -2
- jarvis/jarvis_multi_agent/__init__.py +3 -3
- jarvis/jarvis_platform/base.py +5 -6
- jarvis/jarvis_platform/registry.py +1 -1
- jarvis/jarvis_platform/yuanbao.py +0 -1
- jarvis/jarvis_platform_manager/main.py +28 -11
- jarvis/jarvis_platform_manager/service.py +1 -1
- jarvis/jarvis_rag/cli.py +1 -1
- jarvis/jarvis_rag/embedding_manager.py +0 -1
- jarvis/jarvis_rag/llm_interface.py +0 -3
- jarvis/jarvis_smart_shell/main.py +0 -1
- jarvis/jarvis_stats/cli.py +15 -35
- jarvis/jarvis_stats/stats.py +178 -51
- jarvis/jarvis_tools/clear_memory.py +1 -3
- jarvis/jarvis_tools/cli/main.py +0 -1
- jarvis/jarvis_tools/edit_file.py +0 -1
- jarvis/jarvis_tools/generate_new_tool.py +3 -5
- jarvis/jarvis_tools/registry.py +17 -3
- jarvis/jarvis_tools/retrieve_memory.py +2 -3
- jarvis/jarvis_tools/save_memory.py +3 -3
- jarvis/jarvis_tools/search_web.py +2 -2
- jarvis/jarvis_tools/sub_agent.py +114 -85
- jarvis/jarvis_tools/sub_code_agent.py +29 -7
- jarvis/jarvis_tools/virtual_tty.py +3 -14
- jarvis/jarvis_utils/builtin_replace_map.py +4 -4
- jarvis/jarvis_utils/config.py +44 -15
- jarvis/jarvis_utils/fzf.py +56 -0
- jarvis/jarvis_utils/git_utils.py +1 -1
- jarvis/jarvis_utils/globals.py +1 -2
- jarvis/jarvis_utils/input.py +0 -3
- jarvis/jarvis_utils/methodology.py +3 -5
- jarvis/jarvis_utils/output.py +1 -1
- jarvis/jarvis_utils/utils.py +117 -27
- {jarvis_ai_assistant-0.3.26.dist-info → jarvis_ai_assistant-0.3.28.dist-info}/METADATA +2 -3
- {jarvis_ai_assistant-0.3.26.dist-info → jarvis_ai_assistant-0.3.28.dist-info}/RECORD +62 -56
- {jarvis_ai_assistant-0.3.26.dist-info → jarvis_ai_assistant-0.3.28.dist-info}/WHEEL +0 -0
- {jarvis_ai_assistant-0.3.26.dist-info → jarvis_ai_assistant-0.3.28.dist-info}/entry_points.txt +0 -0
- {jarvis_ai_assistant-0.3.26.dist-info → jarvis_ai_assistant-0.3.28.dist-info}/licenses/LICENSE +0 -0
- {jarvis_ai_assistant-0.3.26.dist-info → jarvis_ai_assistant-0.3.28.dist-info}/top_level.txt +0 -0
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", " • "),
|
@@ -10,7 +10,6 @@
|
|
10
10
|
import json
|
11
11
|
import os
|
12
12
|
import tempfile
|
13
|
-
from pathlib import Path
|
14
13
|
from typing import Any, Dict, List, Optional
|
15
14
|
|
16
15
|
from jarvis.jarvis_platform.base import BasePlatform
|
@@ -21,9 +20,8 @@ from jarvis.jarvis_utils.config import (
|
|
21
20
|
get_central_methodology_repo,
|
22
21
|
get_max_input_token_count,
|
23
22
|
)
|
24
|
-
from jarvis.jarvis_utils.globals import get_agent, current_agent_name
|
25
23
|
from jarvis.jarvis_utils.output import OutputType, PrettyOutput
|
26
|
-
from jarvis.jarvis_utils.utils import
|
24
|
+
from jarvis.jarvis_utils.utils import daily_check_git_updates
|
27
25
|
from jarvis.jarvis_utils.embedding import get_context_token_count
|
28
26
|
|
29
27
|
|
@@ -234,7 +232,7 @@ def load_methodology(
|
|
234
232
|
methodology_titles = list(methodologies.keys())
|
235
233
|
|
236
234
|
# 步骤2:让大模型选择相关性高的方法论
|
237
|
-
selection_prompt =
|
235
|
+
selection_prompt = """以下是所有可用的方法论标题:
|
238
236
|
|
239
237
|
"""
|
240
238
|
for i, title in enumerate(methodology_titles, 1):
|
@@ -305,7 +303,7 @@ def load_methodology(
|
|
305
303
|
|
306
304
|
# 步骤3:将选择出来的方法论内容提供给大模型生成步骤
|
307
305
|
# 首先构建基础提示词部分
|
308
|
-
base_prompt =
|
306
|
+
base_prompt = """以下是与用户需求相关的方法论内容:
|
309
307
|
|
310
308
|
"""
|
311
309
|
suffix_prompt = f"""以下是所有可用的工具内容:
|
jarvis/jarvis_utils/output.py
CHANGED
jarvis/jarvis_utils/utils.py
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
import hashlib
|
3
3
|
import json
|
4
4
|
import os
|
5
|
-
import platform
|
6
5
|
import signal
|
7
6
|
import subprocess
|
8
7
|
import sys
|
@@ -13,10 +12,7 @@ from datetime import datetime, date
|
|
13
12
|
|
14
13
|
import yaml # type: ignore
|
15
14
|
from rich.align import Align
|
16
|
-
from rich.console import
|
17
|
-
from rich.panel import Panel
|
18
|
-
from rich.table import Table
|
19
|
-
from rich.text import Text
|
15
|
+
from rich.console import RenderableType
|
20
16
|
|
21
17
|
from jarvis import __version__
|
22
18
|
from jarvis.jarvis_utils.config import (
|
@@ -121,7 +117,7 @@ def _check_pip_updates() -> bool:
|
|
121
117
|
"""检查pip安装的Jarvis是否有更新
|
122
118
|
|
123
119
|
返回:
|
124
|
-
bool:
|
120
|
+
bool: 是否执行了更新(成功更新返回True以触发重启)
|
125
121
|
"""
|
126
122
|
import urllib.request
|
127
123
|
import urllib.error
|
@@ -146,7 +142,7 @@ def _check_pip_updates() -> bool:
|
|
146
142
|
with urllib.request.urlopen(url, timeout=5) as response:
|
147
143
|
data = json.loads(response.read().decode())
|
148
144
|
latest_version = data["info"]["version"]
|
149
|
-
except (urllib.error.URLError, KeyError, json.JSONDecodeError)
|
145
|
+
except (urllib.error.URLError, KeyError, json.JSONDecodeError):
|
150
146
|
return False
|
151
147
|
|
152
148
|
# 比较版本
|
@@ -166,6 +162,7 @@ def _check_pip_updates() -> bool:
|
|
166
162
|
|
167
163
|
# 检测是否使用uv
|
168
164
|
is_uv_env = False
|
165
|
+
uv_executable: Optional[str] = None
|
169
166
|
if in_venv:
|
170
167
|
if sys.platform == "win32":
|
171
168
|
uv_path = Path(sys.prefix) / "Scripts" / "uv.exe"
|
@@ -173,6 +170,7 @@ def _check_pip_updates() -> bool:
|
|
173
170
|
uv_path = Path(sys.prefix) / "bin" / "uv"
|
174
171
|
if uv_path.exists():
|
175
172
|
is_uv_env = True
|
173
|
+
uv_executable = str(uv_path)
|
176
174
|
|
177
175
|
# 检测是否安装了 RAG 特性(更精确)
|
178
176
|
from jarvis.jarvis_utils.utils import (
|
@@ -180,21 +178,60 @@ def _check_pip_updates() -> bool:
|
|
180
178
|
) # 延迟导入避免潜在循环依赖
|
181
179
|
rag_installed = _is_rag_installed()
|
182
180
|
|
183
|
-
#
|
181
|
+
# 更新命令
|
184
182
|
package_spec = (
|
185
183
|
"jarvis-ai-assistant[rag]" if rag_installed else "jarvis-ai-assistant"
|
186
184
|
)
|
187
|
-
if is_uv_env:
|
185
|
+
if is_uv_env and uv_executable:
|
186
|
+
cmd_list = [uv_executable, "pip", "install", "--upgrade", package_spec]
|
188
187
|
update_cmd = f"uv pip install --upgrade {package_spec}"
|
189
188
|
else:
|
189
|
+
cmd_list = [
|
190
|
+
sys.executable,
|
191
|
+
"-m",
|
192
|
+
"pip",
|
193
|
+
"install",
|
194
|
+
"--upgrade",
|
195
|
+
package_spec,
|
196
|
+
]
|
190
197
|
update_cmd = f"{sys.executable} -m pip install --upgrade {package_spec}"
|
191
198
|
|
192
|
-
|
199
|
+
# 自动尝试升级(失败时提供手动命令)
|
200
|
+
try:
|
201
|
+
PrettyOutput.print("正在自动更新 Jarvis,请稍候...", OutputType.INFO)
|
202
|
+
result = subprocess.run(
|
203
|
+
cmd_list,
|
204
|
+
capture_output=True,
|
205
|
+
text=True,
|
206
|
+
encoding="utf-8",
|
207
|
+
errors="replace",
|
208
|
+
timeout=600,
|
209
|
+
)
|
210
|
+
if result.returncode == 0:
|
211
|
+
PrettyOutput.print("更新成功,正在重启以应用新版本...", OutputType.SUCCESS)
|
212
|
+
# 更新检查日期,避免重复触发
|
213
|
+
last_check_file.write_text(today_str)
|
214
|
+
return True
|
215
|
+
else:
|
216
|
+
err = (result.stderr or result.stdout or "").strip()
|
217
|
+
if err:
|
218
|
+
PrettyOutput.print(
|
219
|
+
f"自动更新失败,错误信息(已截断): {err[:500]}",
|
220
|
+
OutputType.WARNING,
|
221
|
+
)
|
222
|
+
PrettyOutput.print(
|
223
|
+
f"请手动执行以下命令更新: {update_cmd}", OutputType.INFO
|
224
|
+
)
|
225
|
+
except Exception:
|
226
|
+
PrettyOutput.print("自动更新出现异常,已切换为手动更新方式。", OutputType.WARNING)
|
227
|
+
PrettyOutput.print(
|
228
|
+
f"请手动执行以下命令更新: {update_cmd}", OutputType.INFO
|
229
|
+
)
|
193
230
|
|
194
231
|
# 更新检查日期
|
195
232
|
last_check_file.write_text(today_str)
|
196
233
|
|
197
|
-
except Exception
|
234
|
+
except Exception:
|
198
235
|
# 静默处理错误,不影响正常使用
|
199
236
|
pass
|
200
237
|
|
@@ -225,7 +262,6 @@ def _show_usage_stats(welcome_str: str) -> None:
|
|
225
262
|
from jarvis.jarvis_utils.output import OutputType, PrettyOutput
|
226
263
|
|
227
264
|
try:
|
228
|
-
from datetime import datetime
|
229
265
|
|
230
266
|
from rich.console import Console, Group
|
231
267
|
from rich.panel import Panel
|
@@ -709,7 +745,7 @@ def _interactive_config_setup(config_file_path: Path):
|
|
709
745
|
guide_lines = ["", "配置获取方法:"]
|
710
746
|
for key in required_keys:
|
711
747
|
if key in config_guide and config_guide[key]:
|
712
|
-
guide_lines.append(
|
748
|
+
guide_lines.append("")
|
713
749
|
guide_lines.append(f"{key} 获取方法:")
|
714
750
|
guide_lines.append(str(config_guide[key]))
|
715
751
|
PrettyOutput.print("\n".join(guide_lines), OutputType.INFO)
|
@@ -833,8 +869,6 @@ def load_config():
|
|
833
869
|
|
834
870
|
from typing import Tuple
|
835
871
|
|
836
|
-
from typing import Tuple
|
837
|
-
|
838
872
|
|
839
873
|
def _load_config_file(config_file: str) -> Tuple[str, dict]:
|
840
874
|
"""读取并解析YAML格式的配置文件
|
@@ -1179,6 +1213,49 @@ def _collect_optional_config_interactively(
|
|
1179
1213
|
or changed
|
1180
1214
|
)
|
1181
1215
|
|
1216
|
+
# Git 校验模式
|
1217
|
+
def _ask_git_check_mode() -> bool:
|
1218
|
+
try:
|
1219
|
+
_key = "JARVIS_GIT_CHECK_MODE"
|
1220
|
+
if not ask_all and _key in config_data:
|
1221
|
+
return False
|
1222
|
+
|
1223
|
+
from jarvis.jarvis_utils.input import get_choice
|
1224
|
+
from jarvis.jarvis_utils.config import get_git_check_mode
|
1225
|
+
|
1226
|
+
current_mode = config_data.get(_key, get_git_check_mode())
|
1227
|
+
choices = ["strict", "warn"]
|
1228
|
+
tip = (
|
1229
|
+
"请选择 Git 仓库检查模式 (JARVIS_GIT_CHECK_MODE):\n"
|
1230
|
+
"此设置决定了当在 Git 仓库中检测到未提交的更改时,Jarvis应如何处理。\n"
|
1231
|
+
"这对于确保代码修改和提交操作在干净的工作区上进行至关重要。\n"
|
1232
|
+
" - strict: (推荐) 如果存在未提交的更改,则中断相关操作(如代码修改、自动提交)。\n"
|
1233
|
+
" 这可以防止意外覆盖或丢失本地工作。\n"
|
1234
|
+
" - warn: 如果存在未提交的更改,仅显示警告信息,然后继续执行操作。\n"
|
1235
|
+
" 适用于您希望绕过检查并自行管理仓库状态的场景。"
|
1236
|
+
)
|
1237
|
+
|
1238
|
+
try:
|
1239
|
+
# 查找当前模式在选项中的索引
|
1240
|
+
default_index = choices.index(current_mode)
|
1241
|
+
except ValueError:
|
1242
|
+
default_index = 0 # 默认为第一个选项
|
1243
|
+
|
1244
|
+
new_mode = get_choice(
|
1245
|
+
tip,
|
1246
|
+
choices,
|
1247
|
+
)
|
1248
|
+
|
1249
|
+
if new_mode == current_mode:
|
1250
|
+
return False
|
1251
|
+
|
1252
|
+
config_data[_key] = new_mode
|
1253
|
+
return True
|
1254
|
+
except Exception:
|
1255
|
+
return False
|
1256
|
+
|
1257
|
+
changed = _ask_git_check_mode() or changed
|
1258
|
+
|
1182
1259
|
# Git 提交提示词(可选)
|
1183
1260
|
changed = (
|
1184
1261
|
_ask_and_set_optional_str(
|
@@ -1289,7 +1366,6 @@ def _load_and_process_config(jarvis_dir: str, config_file: str) -> None:
|
|
1289
1366
|
config_file: 配置文件路径
|
1290
1367
|
"""
|
1291
1368
|
from jarvis.jarvis_utils.input import user_confirm as get_yes_no
|
1292
|
-
from jarvis.jarvis_utils.input import get_single_line_input
|
1293
1369
|
|
1294
1370
|
try:
|
1295
1371
|
content, config_data = _load_config_file(config_file)
|
@@ -1493,39 +1569,47 @@ def _read_old_config_file(config_file):
|
|
1493
1569
|
)
|
1494
1570
|
set_global_env_data(config_data)
|
1495
1571
|
PrettyOutput.print(
|
1496
|
-
|
1572
|
+
"检测到旧格式配置文件,旧格式以后将不再支持,请尽快迁移到新格式",
|
1497
1573
|
OutputType.WARNING,
|
1498
1574
|
)
|
1499
1575
|
|
1500
1576
|
|
1501
|
-
def while_success(func: Callable[[], Any], sleep_time: float = 0.1) -> Any:
|
1577
|
+
def while_success(func: Callable[[], Any], sleep_time: float = 0.1, max_retries: int = 5) -> Any:
|
1502
1578
|
"""循环执行函数直到成功(累计日志后统一打印,避免逐次加框)
|
1503
1579
|
|
1504
1580
|
参数:
|
1505
1581
|
func -- 要执行的函数
|
1506
1582
|
sleep_time -- 每次失败后的等待时间(秒)
|
1583
|
+
max_retries -- 最大重试次数,默认5次
|
1507
1584
|
|
1508
1585
|
返回:
|
1509
1586
|
函数执行结果
|
1510
1587
|
"""
|
1511
1588
|
result: Any = None
|
1512
|
-
|
1589
|
+
retry_count = 0
|
1590
|
+
while retry_count < max_retries:
|
1513
1591
|
try:
|
1514
1592
|
result = func()
|
1515
1593
|
break
|
1516
1594
|
except Exception:
|
1517
|
-
|
1518
|
-
|
1595
|
+
retry_count += 1
|
1596
|
+
if retry_count < max_retries:
|
1597
|
+
PrettyOutput.print(
|
1598
|
+
f"发生异常,重试中 ({retry_count}/{max_retries}),等待 {sleep_time}s...",
|
1599
|
+
OutputType.WARNING,
|
1600
|
+
)
|
1601
|
+
time.sleep(sleep_time)
|
1519
1602
|
continue
|
1520
1603
|
return result
|
1521
1604
|
|
1522
1605
|
|
1523
|
-
def while_true(func: Callable[[], bool], sleep_time: float = 0.1) -> Any:
|
1606
|
+
def while_true(func: Callable[[], bool], sleep_time: float = 0.1, max_retries: int = 5) -> Any:
|
1524
1607
|
"""循环执行函数直到返回True(累计日志后统一打印,避免逐次加框)
|
1525
1608
|
|
1526
1609
|
参数:
|
1527
1610
|
func: 要执行的函数,必须返回布尔值
|
1528
1611
|
sleep_time: 每次失败后的等待时间(秒)
|
1612
|
+
max_retries: 最大重试次数,默认5次
|
1529
1613
|
|
1530
1614
|
返回:
|
1531
1615
|
函数最终返回的True值
|
@@ -1535,12 +1619,18 @@ def while_true(func: Callable[[], bool], sleep_time: float = 0.1) -> Any:
|
|
1535
1619
|
不捕获异常,异常会直接抛出
|
1536
1620
|
"""
|
1537
1621
|
ret: bool = False
|
1538
|
-
|
1622
|
+
retry_count = 0
|
1623
|
+
while retry_count < max_retries:
|
1539
1624
|
ret = func()
|
1540
1625
|
if ret:
|
1541
1626
|
break
|
1542
|
-
|
1543
|
-
|
1627
|
+
retry_count += 1
|
1628
|
+
if retry_count < max_retries:
|
1629
|
+
PrettyOutput.print(
|
1630
|
+
f"返回空值,重试中 ({retry_count}/{max_retries}),等待 {sleep_time}s...",
|
1631
|
+
OutputType.WARNING,
|
1632
|
+
)
|
1633
|
+
time.sleep(sleep_time)
|
1544
1634
|
return ret
|
1545
1635
|
|
1546
1636
|
|
@@ -1567,7 +1657,7 @@ def get_file_line_count(filename: str) -> int:
|
|
1567
1657
|
"""
|
1568
1658
|
try:
|
1569
1659
|
return len(open(filename, "r", encoding="utf-8", errors="ignore").readlines())
|
1570
|
-
except Exception
|
1660
|
+
except Exception:
|
1571
1661
|
return 0
|
1572
1662
|
|
1573
1663
|
|
@@ -1708,7 +1798,7 @@ def _pull_git_repo(repo_path: Path, repo_type: str):
|
|
1708
1798
|
return
|
1709
1799
|
|
1710
1800
|
# 执行 git pull
|
1711
|
-
|
1801
|
+
subprocess.run(
|
1712
1802
|
["git", "pull"],
|
1713
1803
|
cwd=repo_path,
|
1714
1804
|
capture_output=True,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: jarvis-ai-assistant
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.28
|
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,29 +1,34 @@
|
|
1
|
-
jarvis/__init__.py,sha256=
|
2
|
-
jarvis/jarvis_agent/__init__.py,sha256=
|
3
|
-
jarvis/jarvis_agent/agent_manager.py,sha256=
|
1
|
+
jarvis/__init__.py,sha256=1K9v5i77_4p2eML-QPikTWjE-oPcbpklsA_9cmXVITc,74
|
2
|
+
jarvis/jarvis_agent/__init__.py,sha256=eBUO23ysoct4oCZxi3ITuiPsdnEvFR0bKZVdycDRAhw,42606
|
3
|
+
jarvis/jarvis_agent/agent_manager.py,sha256=qNcMy5Xc5ZT26JfczBg4b4D5udKVHSFsCFjlpbIdmPo,3076
|
4
4
|
jarvis/jarvis_agent/builtin_input_handler.py,sha256=wS-FqpT3pIXwHn1dfL3SpXonUKWgVThbQueUIeyRc2U,2917
|
5
|
-
jarvis/jarvis_agent/
|
5
|
+
jarvis/jarvis_agent/config.py,sha256=Ni1aTVzmdERJ89A1jsC21Tsys_9MM-TTx1w5XwxyEwA,3130
|
6
|
+
jarvis/jarvis_agent/config_editor.py,sha256=hlb9EYxKWcR_qdW2O89CgNDdciR9Isi743JU_1gD8j4,1927
|
6
7
|
jarvis/jarvis_agent/edit_file_handler.py,sha256=5sFz84jqy2gpc0aLOre2bvz8_DitlBoWZs_cQwftWLw,11570
|
7
|
-
jarvis/jarvis_agent/
|
8
|
-
jarvis/jarvis_agent/
|
8
|
+
jarvis/jarvis_agent/event_bus.py,sha256=-QVAGTe3B2Cu3-FGkw78l8XikS4vPZ-D61ajUtplOCU,1515
|
9
|
+
jarvis/jarvis_agent/file_methodology_manager.py,sha256=xaxG_TwS_eenYgbTn9tuSc54uZ6ByEQDe0o6sABGYA4,4136
|
10
|
+
jarvis/jarvis_agent/jarvis.py,sha256=AEloRaSg2hletd5JhpjbfsNInZCtSCSFmtFqkmjzlvY,24362
|
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=BJ1-dEyFV9DcJCWrKdH3mEoe2rrD1T_Zaa_4ja5Tp4k,7958
|
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
|
-
jarvis/jarvis_agent/shell_input_handler.py,sha256=
|
19
|
-
jarvis/jarvis_agent/task_analyzer.py,sha256=
|
20
|
-
jarvis/jarvis_agent/task_manager.py,sha256=
|
22
|
+
jarvis/jarvis_agent/shell_input_handler.py,sha256=ts9XNvRs_LYX9Hh6hdYEinuAsJfj1PsaOgQHDdlldVk,1859
|
23
|
+
jarvis/jarvis_agent/task_analyzer.py,sha256=tA9_LX-lyYJqiJBqPWmfQYQZ6fe07ZGTJEWP_zCp2FM,7643
|
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=tifFN49GkO_Q80sqOTVmhxwbNWTazF3K0cr8AnnvzdU,1453
|
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=
|
26
|
-
jarvis/jarvis_code_analysis/code_review.py,sha256=
|
29
|
+
jarvis/jarvis_code_agent/code_agent.py,sha256=mt78h3VLAbTAjTHOwjxNDOllHqfiHwFcAfmvUjiJFQI,32227
|
30
|
+
jarvis/jarvis_code_agent/lint.py,sha256=_qLJB_bC3PuoHG-j4EGOnYzNGO26jHlKLbkysfyQW1c,3954
|
31
|
+
jarvis/jarvis_code_analysis/code_review.py,sha256=Z0JsvyVPPHPm6rfo4fqaQr7CdZKIllo9jqStzV0i_-o,34470
|
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
|
29
34
|
jarvis/jarvis_code_analysis/checklists/csharp.py,sha256=ShPXrl2_UPAnGaCHAG2wLl90COG3HK2XCSr1UK2dxN4,2420
|
@@ -44,86 +49,87 @@ 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=9JoQz6dhzYPyvLrbRBJmcLf28S8_lKFW-TmO-u-hFns,16357
|
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
|
-
jarvis/jarvis_mcp/stdio_mcp_client.py,sha256=
|
59
|
+
jarvis/jarvis_mcp/stdio_mcp_client.py,sha256=sdVwHgBoXa95WeUTmFIq9ys3eRgEB5Psalfqq5FzMMI,11277
|
55
60
|
jarvis/jarvis_mcp/streamable_mcp_client.py,sha256=BenOeZGNHdUOJT5Z3cc5MhS6aOeKQgqXm1ED-BqsLCY,15511
|
56
61
|
jarvis/jarvis_memory_organizer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
57
|
-
jarvis/jarvis_memory_organizer/memory_organizer.py,sha256=
|
58
|
-
jarvis/jarvis_methodology/main.py,sha256=
|
59
|
-
jarvis/jarvis_multi_agent/__init__.py,sha256=
|
62
|
+
jarvis/jarvis_memory_organizer/memory_organizer.py,sha256=RQeuQGUDOVXDFws-AptDRjJgUqt4UYSAFRhT1jdZe-M,26295
|
63
|
+
jarvis/jarvis_methodology/main.py,sha256=uiNzk5b5O6xdvRhsOuD7ubxdd2tPcDsFFnvmes8uH8I,11370
|
64
|
+
jarvis/jarvis_multi_agent/__init__.py,sha256=OD3ZyuxPNPHaqjQqiKiW0HuB0DI_sdv41wFlCISHWIQ,6084
|
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=u1XvfE83-S-3W_euMrMaaa8NdXeIHlo7VSxLBbN3K-Y,13504
|
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
|
67
|
-
jarvis/jarvis_platform/registry.py,sha256=
|
72
|
+
jarvis/jarvis_platform/registry.py,sha256=YqaFM2LXcHvqMQrTEQ_cVo8V-wQ8HhOeSdC8DdjvC00,8045
|
68
73
|
jarvis/jarvis_platform/tongyi.py,sha256=0UM1VLbBYrlNF5dSRqp2Kefeb0FkXhKhc7PnrsZWqOQ,23456
|
69
|
-
jarvis/jarvis_platform/yuanbao.py,sha256=
|
74
|
+
jarvis/jarvis_platform/yuanbao.py,sha256=oeoomh7RjF4Y3bOF-ooUv6wE6UU13Cmi2K6NfoCwpi0,23954
|
70
75
|
jarvis/jarvis_platform_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
71
|
-
jarvis/jarvis_platform_manager/main.py,sha256=
|
72
|
-
jarvis/jarvis_platform_manager/service.py,sha256=
|
76
|
+
jarvis/jarvis_platform_manager/main.py,sha256=yv7m8cNRBe4nk0Kui1w2PKTUr9Sb3wrQirvmyAUbr5U,20400
|
77
|
+
jarvis/jarvis_platform_manager/service.py,sha256=kFIsFTwaMZ1ooQNFAwvUXjB7G2enbAqHExCdO3jskzQ,14892
|
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=
|
76
|
-
jarvis/jarvis_rag/embedding_manager.py,sha256=
|
77
|
-
jarvis/jarvis_rag/llm_interface.py,sha256=
|
80
|
+
jarvis/jarvis_rag/cli.py,sha256=dUtdxwUzOsIwhAdr_nLnRSw-8q4W7kw5lU_K6VDHzlE,17517
|
81
|
+
jarvis/jarvis_rag/embedding_manager.py,sha256=r-S12eW5nz3GJQgbk-7eQ9JVxxZ57-wLAQx_1zSl0po,10330
|
82
|
+
jarvis/jarvis_rag/llm_interface.py,sha256=ntZzJtq-74d8ljqm-_flHaFys_RHjMMZRCKcMdwZt-Y,4505
|
78
83
|
jarvis/jarvis_rag/query_rewriter.py,sha256=LGAWZ8kwH_dpquuYqc4QWC7IXmHX3SsnPSYMWOn-nDE,4072
|
79
84
|
jarvis/jarvis_rag/rag_pipeline.py,sha256=aaTuxiArtVaPemWeySApw64q204JeLNXpOEtq7Adn1I,13797
|
80
85
|
jarvis/jarvis_rag/reranker.py,sha256=7Azc3y5fngwfPKtzZ8tx6iGKNeqC8uDy8yo8VCyLyL4,2670
|
81
86
|
jarvis/jarvis_rag/retriever.py,sha256=BNEFZAgxTbmkxzBP1uy1wz3MX8wJN1wx5EtfsHqakqE,18374
|
82
87
|
jarvis/jarvis_smart_shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
83
|
-
jarvis/jarvis_smart_shell/main.py,sha256=
|
88
|
+
jarvis/jarvis_smart_shell/main.py,sha256=lUJPwLR9RlaaVv0lx3ojjjv5dELHOaindlsLDDkpssQ,14960
|
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=TsX4JQmEKjkFLkO_e81w7_6mXMin-7Mv_It_dols0q8,11477
|
91
|
+
jarvis/jarvis_stats/stats.py,sha256=MrVX0nJatCMd-ceijOVuY7jofwMxsf4QYMujyacvgAM,25355
|
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
|
90
95
|
jarvis/jarvis_tools/ask_user.py,sha256=M6DdLNryCE8y1JcdZHEifUgZkPUEPNKc-zDW5p0Mb1k,2029
|
91
96
|
jarvis/jarvis_tools/base.py,sha256=tFZkRlbV_a-pbjM-ci9AYmXVJm__FXuzVWKbQEyz4Ao,1639
|
92
|
-
jarvis/jarvis_tools/clear_memory.py,sha256=
|
93
|
-
jarvis/jarvis_tools/edit_file.py,sha256=
|
97
|
+
jarvis/jarvis_tools/clear_memory.py,sha256=8DOq6dHLemfKTJqu227PWBIp8Iu5K7EXwINzL8DYk8M,8205
|
98
|
+
jarvis/jarvis_tools/edit_file.py,sha256=t76zzfHjbAnx_7ZUqu9SvzGxnfMMZQXZxX3tPX7JkdE,7099
|
94
99
|
jarvis/jarvis_tools/execute_script.py,sha256=UeOTv5Vf6KqmPH-gSwFf2xz4pRAADo9KTUUpi6yU138,6221
|
95
100
|
jarvis/jarvis_tools/file_analyzer.py,sha256=jzVb8fAJn3dWwpCiYH-Wuxva4kpHqBB2_V3x3mzY0Gs,4158
|
96
|
-
jarvis/jarvis_tools/generate_new_tool.py,sha256=
|
101
|
+
jarvis/jarvis_tools/generate_new_tool.py,sha256=KBx0uxpdmqqGuK-DjaNrepp-JCTFJbgBh02sfQsVeqw,7792
|
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=
|
101
|
-
jarvis/jarvis_tools/retrieve_memory.py,sha256=
|
105
|
+
jarvis/jarvis_tools/registry.py,sha256=iUzHEia3ufWqfLqlBRJl5KwKCU_0EvqEEiO136NHvRs,32846
|
106
|
+
jarvis/jarvis_tools/retrieve_memory.py,sha256=hhhGSr7jebPHICY9oEKICyI8mfqsRtKjh58qZNZApKc,8624
|
102
107
|
jarvis/jarvis_tools/rewrite_file.py,sha256=CuvjWPTbUaPbex9FKSmw_Ru4r6R-CX_3vqTqCTp8nHA,6959
|
103
|
-
jarvis/jarvis_tools/save_memory.py,sha256=
|
104
|
-
jarvis/jarvis_tools/search_web.py,sha256=
|
105
|
-
jarvis/jarvis_tools/sub_agent.py,sha256=
|
106
|
-
jarvis/jarvis_tools/sub_code_agent.py,sha256=
|
107
|
-
jarvis/jarvis_tools/virtual_tty.py,sha256=
|
108
|
+
jarvis/jarvis_tools/save_memory.py,sha256=RQtNxcpU53FFv_EBjH0i0oyQ7jWubm-trD1BHuqaGjI,6985
|
109
|
+
jarvis/jarvis_tools/search_web.py,sha256=nkbmyIquGLl2JkgWP6pQ9dPcLlfQCuegwt_RKE0YWU0,6158
|
110
|
+
jarvis/jarvis_tools/sub_agent.py,sha256=KLaRjBfSAjnWm5SIvm4_yk0AXcb7ck6C5UBkzqXBEJQ,8899
|
111
|
+
jarvis/jarvis_tools/sub_code_agent.py,sha256=K9UaLOIQqV8cXHhNcVZ508a81C-qKNAg_j6wMziZ75s,9447
|
112
|
+
jarvis/jarvis_tools/virtual_tty.py,sha256=L7-J00ARQvIa25T45Hhqg2eCBl6W2LFgqDlWMWf-7dk,25275
|
108
113
|
jarvis/jarvis_tools/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
109
|
-
jarvis/jarvis_tools/cli/main.py,sha256=
|
114
|
+
jarvis/jarvis_tools/cli/main.py,sha256=WL2GNV7WqYl7G1-btRGvCkzDCMk4fPfNvzCrnUFVPxs,9323
|
110
115
|
jarvis/jarvis_utils/__init__.py,sha256=67h0ldisGlh3oK4DAeNEL2Bl_VsI3tSmfclasyVlueM,850
|
111
|
-
jarvis/jarvis_utils/builtin_replace_map.py,sha256=
|
116
|
+
jarvis/jarvis_utils/builtin_replace_map.py,sha256=z8iAqsbZUiGFaozxG1xSu128op8udqHOeEw-GxNt4bU,1708
|
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=FjoSL6CHF-i18RwLDKPR7GIEJ2GlORdsjeJw2oXjs0g,20044
|
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/
|
117
|
-
jarvis/jarvis_utils/
|
121
|
+
jarvis/jarvis_utils/fzf.py,sha256=92u4w5pd6cyxBJlmyw3rXNyxToSAalK79m_aEBmkgV0,1590
|
122
|
+
jarvis/jarvis_utils/git_utils.py,sha256=Ed-11luixxuWKw4pT7Nq3vxU1G7DMBBya_CA7Xanzjk,23495
|
123
|
+
jarvis/jarvis_utils/globals.py,sha256=7Xvf9HY6jYJL4vSD1F1WCoxHkHCAyltJUYt4V9gGVU4,8865
|
118
124
|
jarvis/jarvis_utils/http.py,sha256=eRhV3-GYuWmQ0ogq9di9WMlQkFcVb1zGCrySnOgT1x0,4392
|
119
|
-
jarvis/jarvis_utils/input.py,sha256=
|
120
|
-
jarvis/jarvis_utils/methodology.py,sha256=
|
121
|
-
jarvis/jarvis_utils/output.py,sha256=
|
125
|
+
jarvis/jarvis_utils/input.py,sha256=J4ot3ldeCLbhrJdsoQVdl8L6BHg-dJhcrnP3UYL4vis,36502
|
126
|
+
jarvis/jarvis_utils/methodology.py,sha256=z_renvRGgHiC-XTQPuN6rvrJ_ffHlwxK_b1BU_jmNAQ,12800
|
127
|
+
jarvis/jarvis_utils/output.py,sha256=y2fVcao_2ZowFl0IxUrJZCi8T6ZM0z-iPzpk8T8eLxc,13623
|
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=CJwytbsM0rZjfWDNnYsW1iLNkFap2_JbjuSg5Yq33W0,67136
|
130
|
+
jarvis_ai_assistant-0.3.28.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
|
131
|
+
jarvis_ai_assistant-0.3.28.dist-info/METADATA,sha256=DiuU2MhlO7Q5Z7NbFq5RVouUnOeYozBwjF7NtHQ-XTY,18752
|
132
|
+
jarvis_ai_assistant-0.3.28.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
133
|
+
jarvis_ai_assistant-0.3.28.dist-info/entry_points.txt,sha256=4GcWKFxRJD-QU14gw_3ZaW4KuEVxOcZK9i270rwPdjA,1395
|
134
|
+
jarvis_ai_assistant-0.3.28.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
|
135
|
+
jarvis_ai_assistant-0.3.28.dist-info/RECORD,,
|
File without changes
|
{jarvis_ai_assistant-0.3.26.dist-info → jarvis_ai_assistant-0.3.28.dist-info}/entry_points.txt
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.26.dist-info → jarvis_ai_assistant-0.3.28.dist-info}/licenses/LICENSE
RENAMED
File without changes
|
File without changes
|