jarvis-ai-assistant 0.3.17__tar.gz → 0.3.18__tar.gz
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_ai_assistant-0.3.17/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.3.18}/PKG-INFO +1 -1
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/pyproject.toml +1 -1
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/setup.py +1 -1
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/__init__.py +1 -1
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/__init__.py +2 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/jarvis.py +13 -3
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/methodology_share_manager.py +2 -2
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/tool_share_manager.py +2 -2
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_data/config_schema.json +5 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_platform/base.py +8 -1
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_platform_manager/main.py +12 -22
- jarvis_ai_assistant-0.3.18/src/jarvis/jarvis_tools/read_webpage.py +120 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_utils/config.py +8 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_utils/utils.py +9 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18/src/jarvis_ai_assistant.egg-info}/PKG-INFO +1 -1
- jarvis_ai_assistant-0.3.17/src/jarvis/jarvis_tools/read_webpage.py +0 -59
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/LICENSE +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/MANIFEST.in +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/README.md +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/setup.cfg +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/agent_manager.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/builtin_input_handler.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/config_editor.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/edit_file_handler.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/file_methodology_manager.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/main.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/memory_manager.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/output_handler.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/prompt_builder.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/prompts.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/protocols.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/session_manager.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/share_manager.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/shell_input_handler.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/task_analyzer.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/task_manager.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/tool_executor.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_agent/code_agent.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_agent/lint.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_analysis/checklists/devops.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_analysis/checklists/docs.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_analysis/checklists/go.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_analysis/checklists/java.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_analysis/checklists/loader.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_analysis/checklists/php.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_analysis/checklists/python.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_analysis/checklists/rust.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_analysis/checklists/shell.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_analysis/checklists/sql.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_analysis/checklists/swift.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_analysis/checklists/web.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_analysis/code_review.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_git_squash/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_git_squash/main.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_git_utils/git_commiter.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_mcp/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_mcp/sse_mcp_client.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_mcp/stdio_mcp_client.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_mcp/streamable_mcp_client.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_memory_organizer/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_memory_organizer/memory_organizer.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_methodology/main.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_multi_agent/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_multi_agent/main.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_platform/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_platform/ai8.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_platform/human.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_platform/kimi.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_platform/openai.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_platform/registry.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_platform/tongyi.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_platform/yuanbao.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_platform_manager/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_platform_manager/service.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_rag/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_rag/cache.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_rag/cli.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_rag/embedding_manager.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_rag/llm_interface.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_rag/query_rewriter.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_rag/rag_pipeline.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_rag/reranker.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_rag/retriever.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_smart_shell/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_smart_shell/main.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_stats/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_stats/cli.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_stats/stats.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_stats/storage.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_stats/visualizer.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/ask_user.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/base.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/clear_memory.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/cli/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/cli/main.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/edit_file.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/execute_script.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/file_analyzer.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/generate_new_tool.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/methodology.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/read_code.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/registry.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/retrieve_memory.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/rewrite_file.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/save_memory.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/search_web.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/virtual_tty.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_utils/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_utils/builtin_replace_map.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_utils/clipboard.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_utils/embedding.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_utils/file_processors.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_utils/git_utils.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_utils/globals.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_utils/http.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_utils/input.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_utils/methodology.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_utils/output.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_utils/tag.py +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis_ai_assistant.egg-info/entry_points.txt +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis_ai_assistant.egg-info/requires.txt +0 -0
- {jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis_ai_assistant.egg-info/top_level.txt +0 -0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "jarvis-ai-assistant"
|
7
|
-
version = "0.3.
|
7
|
+
version = "0.3.18"
|
8
8
|
description = "Jarvis: An AI assistant that uses tools to interact with the system"
|
9
9
|
readme = "README.md"
|
10
10
|
authors = [{ name = "skyfire", email = "skyfireitdiy@hotmail.com" }]
|
@@ -3,7 +3,7 @@ from setuptools import setup, find_packages # type: ignore
|
|
3
3
|
|
4
4
|
setup(
|
5
5
|
name="jarvis-ai-assistant",
|
6
|
-
version="0.3.
|
6
|
+
version="0.3.18",
|
7
7
|
author="skyfire",
|
8
8
|
author_email="skyfireitdiy@hotmail.com",
|
9
9
|
description="An AI assistant that uses various tools to interact with the system",
|
@@ -240,6 +240,7 @@ def handle_builtin_config_selector(
|
|
240
240
|
# 解析YAML以获取可读名称/描述(失败时静默降级为文件名)
|
241
241
|
name = fpath.stem
|
242
242
|
desc = ""
|
243
|
+
roles_count = 0
|
243
244
|
try:
|
244
245
|
with open(
|
245
246
|
fpath, "r", encoding="utf-8", errors="ignore"
|
@@ -251,8 +252,9 @@ def handle_builtin_config_selector(
|
|
251
252
|
if cat == "roles" and isinstance(
|
252
253
|
data.get("roles"), list
|
253
254
|
):
|
255
|
+
roles_count = len(data["roles"])
|
254
256
|
if not desc:
|
255
|
-
desc = f"{
|
257
|
+
desc = f"{roles_count} 个角色"
|
256
258
|
except Exception:
|
257
259
|
# 忽略解析错误,使用默认显示
|
258
260
|
pass
|
@@ -285,6 +287,7 @@ def handle_builtin_config_selector(
|
|
285
287
|
"name": str(name),
|
286
288
|
"desc": str(desc),
|
287
289
|
"details": str(details),
|
290
|
+
"roles_count": int(roles_count),
|
288
291
|
}
|
289
292
|
)
|
290
293
|
|
@@ -302,9 +305,16 @@ def handle_builtin_config_selector(
|
|
302
305
|
category = opt.get("category", "")
|
303
306
|
name = opt.get("name", "")
|
304
307
|
file_path = opt.get("file", "")
|
305
|
-
# 描述列显示配置描述;若为 roles
|
308
|
+
# 描述列显示配置描述;若为 roles 同时显示角色数量与列表
|
306
309
|
if category == "roles":
|
307
|
-
|
310
|
+
count = opt.get("roles_count")
|
311
|
+
details = opt.get("details", "")
|
312
|
+
parts = []
|
313
|
+
if isinstance(count, int) and count > 0:
|
314
|
+
parts.append(f"{count} 个角色")
|
315
|
+
if details:
|
316
|
+
parts.append(details)
|
317
|
+
desc_display = "\n".join(parts) if parts else ""
|
308
318
|
else:
|
309
319
|
desc_display = opt.get("desc", "")
|
310
320
|
table.add_row(str(idx), category, name, file_path, desc_display)
|
@@ -151,12 +151,12 @@ class MethodologyShareManager(ShareManager):
|
|
151
151
|
"没有找到新的方法论文件(所有方法论可能已存在于中心仓库)",
|
152
152
|
OutputType.WARNING,
|
153
153
|
)
|
154
|
-
|
154
|
+
return
|
155
155
|
|
156
156
|
# 选择要分享的资源
|
157
157
|
selected_resources = self.select_resources(local_resources)
|
158
158
|
if not selected_resources:
|
159
|
-
|
159
|
+
return
|
160
160
|
|
161
161
|
# 分享资源
|
162
162
|
copied_list = self.share_resources(selected_resources)
|
@@ -112,12 +112,12 @@ class ToolShareManager(ShareManager):
|
|
112
112
|
"没有找到新的工具文件(所有工具可能已存在于中心仓库)",
|
113
113
|
OutputType.WARNING,
|
114
114
|
)
|
115
|
-
|
115
|
+
return
|
116
116
|
|
117
117
|
# 选择要分享的资源
|
118
118
|
selected_resources = self.select_resources(local_resources)
|
119
119
|
if not selected_resources:
|
120
|
-
|
120
|
+
return
|
121
121
|
|
122
122
|
# 分享资源
|
123
123
|
moved_list = self.share_resources(selected_resources)
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_data/config_schema.json
RENAMED
@@ -294,6 +294,11 @@
|
|
294
294
|
"description": "在进入默认通用代理前,列出可用配置(agent/multi_agent/roles)供选择",
|
295
295
|
"default": false
|
296
296
|
},
|
297
|
+
"JARVIS_IMMEDIATE_ABORT": {
|
298
|
+
"type": "boolean",
|
299
|
+
"description": "是否启用立即中断:在对话迭代中检测到中断信号时立即返回",
|
300
|
+
"default": false
|
301
|
+
},
|
297
302
|
"JARVIS_TOOL_GROUP": {
|
298
303
|
"type": "string",
|
299
304
|
"description": "选择一个预定义的工具配置组",
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_platform/base.py
RENAMED
@@ -15,9 +15,10 @@ from jarvis.jarvis_utils.config import (
|
|
15
15
|
get_max_input_token_count,
|
16
16
|
get_pretty_output,
|
17
17
|
is_print_prompt,
|
18
|
+
is_immediate_abort,
|
18
19
|
)
|
19
20
|
from jarvis.jarvis_utils.embedding import split_text_into_chunks
|
20
|
-
from jarvis.jarvis_utils.globals import set_in_chat
|
21
|
+
from jarvis.jarvis_utils.globals import set_in_chat, get_interrupt
|
21
22
|
from jarvis.jarvis_utils.output import OutputType, PrettyOutput
|
22
23
|
from jarvis.jarvis_utils.tag import ct, ot
|
23
24
|
from jarvis.jarvis_utils.utils import get_context_token_count, while_success, while_true
|
@@ -137,6 +138,8 @@ class BasePlatform(ABC):
|
|
137
138
|
with Live(panel, refresh_per_second=10, transient=False) as live:
|
138
139
|
for s in self.chat(message):
|
139
140
|
response += s
|
141
|
+
if is_immediate_abort() and get_interrupt():
|
142
|
+
return response
|
140
143
|
text_content.append(s, style="bright_white")
|
141
144
|
panel.subtitle = "[yellow]正在回答...[/yellow]"
|
142
145
|
live.update(panel)
|
@@ -150,10 +153,14 @@ class BasePlatform(ABC):
|
|
150
153
|
for s in self.chat(message):
|
151
154
|
print(s, end="", flush=True)
|
152
155
|
response += s
|
156
|
+
if is_immediate_abort() and get_interrupt():
|
157
|
+
return response
|
153
158
|
print()
|
154
159
|
else:
|
155
160
|
for s in self.chat(message):
|
156
161
|
response += s
|
162
|
+
if is_immediate_abort() and get_interrupt():
|
163
|
+
return response
|
157
164
|
# Keep original think tag handling
|
158
165
|
response = re.sub(
|
159
166
|
ot("think") + r".*?" + ct("think"), "", response, flags=re.DOTALL
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_platform_manager/main.py
RENAMED
@@ -26,9 +26,7 @@ app = typer.Typer(help="Jarvis AI 平台")
|
|
26
26
|
|
27
27
|
@app.command("info")
|
28
28
|
def list_platforms(
|
29
|
-
platform: Optional[str] = typer.Option(
|
30
|
-
None, "--platform", "-p", help="指定要查看的平台"
|
31
|
-
)
|
29
|
+
platform: Optional[str] = typer.Option(None, "--platform", "-p", help="指定要查看的平台")
|
32
30
|
) -> None:
|
33
31
|
"""列出所有支持的平台和模型,或指定平台的详细信息。"""
|
34
32
|
registry = PlatformRegistry.get_global_platform_registry()
|
@@ -219,13 +217,9 @@ def chat_with_model(
|
|
219
217
|
for entry in conversation_history:
|
220
218
|
file_obj.write(f"{entry['role']}: {entry['content']}\n\n")
|
221
219
|
|
222
|
-
PrettyOutput.print(
|
223
|
-
f"所有对话已保存到 {file_path}", OutputType.SUCCESS
|
224
|
-
)
|
220
|
+
PrettyOutput.print(f"所有对话已保存到 {file_path}", OutputType.SUCCESS)
|
225
221
|
except Exception as exc:
|
226
|
-
PrettyOutput.print(
|
227
|
-
f"保存所有对话失败: {str(exc)}", OutputType.ERROR
|
228
|
-
)
|
222
|
+
PrettyOutput.print(f"保存所有对话失败: {str(exc)}", OutputType.ERROR)
|
229
223
|
continue
|
230
224
|
|
231
225
|
# Check if it is a save_session command
|
@@ -246,9 +240,7 @@ def chat_with_model(
|
|
246
240
|
file_path = file_path[1:-1]
|
247
241
|
|
248
242
|
if platform.save(file_path):
|
249
|
-
PrettyOutput.print(
|
250
|
-
f"会话已保存到 {file_path}", OutputType.SUCCESS
|
251
|
-
)
|
243
|
+
PrettyOutput.print(f"会话已保存到 {file_path}", OutputType.SUCCESS)
|
252
244
|
else:
|
253
245
|
PrettyOutput.print("保存会话失败", OutputType.ERROR)
|
254
246
|
except Exception as exc:
|
@@ -274,9 +266,7 @@ def chat_with_model(
|
|
274
266
|
|
275
267
|
if platform.restore(file_path):
|
276
268
|
conversation_history = [] # Clear local history after loading
|
277
|
-
PrettyOutput.print(
|
278
|
-
f"会话已从 {file_path} 加载", OutputType.SUCCESS
|
279
|
-
)
|
269
|
+
PrettyOutput.print(f"会话已从 {file_path} 加载", OutputType.SUCCESS)
|
280
270
|
else:
|
281
271
|
PrettyOutput.print("加载会话失败", OutputType.ERROR)
|
282
272
|
except Exception as exc:
|
@@ -356,9 +346,7 @@ def validate_platform_model(platform: Optional[str], model: Optional[str]) -> bo
|
|
356
346
|
|
357
347
|
@app.command("chat")
|
358
348
|
def chat_command(
|
359
|
-
platform: Optional[str] = typer.Option(
|
360
|
-
None, "--platform", "-p", help="指定要使用的平台"
|
361
|
-
),
|
349
|
+
platform: Optional[str] = typer.Option(None, "--platform", "-p", help="指定要使用的平台"),
|
362
350
|
model: Optional[str] = typer.Option(None, "--model", "-m", help="指定要使用的模型"),
|
363
351
|
llm_type: str = typer.Option(
|
364
352
|
"normal",
|
@@ -441,9 +429,7 @@ def role_command(
|
|
441
429
|
platform: Optional[str] = typer.Option(
|
442
430
|
None, "--platform", "-p", help="指定要使用的平台,覆盖角色配置"
|
443
431
|
),
|
444
|
-
model: Optional[str] = typer.Option(
|
445
|
-
None, "--model", "-m", help="指定要使用的模型,覆盖角色配置"
|
446
|
-
),
|
432
|
+
model: Optional[str] = typer.Option(None, "--model", "-m", help="指定要使用的模型,覆盖角色配置"),
|
447
433
|
llm_type: Optional[str] = typer.Option(
|
448
434
|
None,
|
449
435
|
"-t",
|
@@ -472,8 +458,12 @@ def role_command(
|
|
472
458
|
PrettyOutput.print(output_str, OutputType.INFO)
|
473
459
|
|
474
460
|
# 让用户选择角色
|
461
|
+
raw_choice = get_single_line_input("请选择角色(输入编号,直接回车退出): ")
|
462
|
+
if not raw_choice.strip():
|
463
|
+
PrettyOutput.print("已取消,退出程序", OutputType.INFO)
|
464
|
+
raise typer.Exit(code=0)
|
475
465
|
try:
|
476
|
-
choice = int(
|
466
|
+
choice = int(raw_choice)
|
477
467
|
selected_role = config["roles"][choice - 1]
|
478
468
|
except (ValueError, IndexError):
|
479
469
|
PrettyOutput.print("无效的选择", OutputType.ERROR)
|
@@ -0,0 +1,120 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
from typing import Any, Dict
|
3
|
+
|
4
|
+
from jarvis.jarvis_platform.registry import PlatformRegistry
|
5
|
+
from jarvis.jarvis_utils.output import OutputType, PrettyOutput
|
6
|
+
from jarvis.jarvis_utils.config import (
|
7
|
+
get_web_search_platform_name,
|
8
|
+
get_web_search_model_name,
|
9
|
+
)
|
10
|
+
from jarvis.jarvis_utils.http import get as http_get
|
11
|
+
from markdownify import markdownify as md # type: ignore
|
12
|
+
import requests
|
13
|
+
|
14
|
+
|
15
|
+
class WebpageTool:
|
16
|
+
name = "read_webpage"
|
17
|
+
description = "读取网页内容,提取标题、文本和超链接"
|
18
|
+
parameters = {
|
19
|
+
"type": "object",
|
20
|
+
"properties": {
|
21
|
+
"url": {"type": "string", "description": "要读取的网页URL"},
|
22
|
+
"want": {
|
23
|
+
"type": "string",
|
24
|
+
"description": "具体想要从网页获取的信息或回答的问题",
|
25
|
+
"default": "请总结这个网页的主要内容",
|
26
|
+
},
|
27
|
+
},
|
28
|
+
"required": ["url"],
|
29
|
+
}
|
30
|
+
|
31
|
+
def execute(self, args: Dict[str, Any]) -> Dict[str, Any]:
|
32
|
+
"""
|
33
|
+
读取网页内容。
|
34
|
+
优先使用配置的 web_search_platform 与模型的原生web能力;若不支持,则使用requests抓取页面并调用模型进行分析。
|
35
|
+
"""
|
36
|
+
try:
|
37
|
+
url = str(args.get("url", "")).strip()
|
38
|
+
want = str(args.get("want", "请总结这个网页的主要内容"))
|
39
|
+
|
40
|
+
if not url:
|
41
|
+
return {"success": False, "stdout": "", "stderr": "缺少必需参数:url"}
|
42
|
+
|
43
|
+
# 1) 优先使用配置的 Web 搜索平台与模型(若支持web)
|
44
|
+
web_search_platform = get_web_search_platform_name()
|
45
|
+
web_search_model = get_web_search_model_name()
|
46
|
+
if web_search_platform and web_search_model:
|
47
|
+
model = PlatformRegistry().create_platform(web_search_platform)
|
48
|
+
if model:
|
49
|
+
model.set_model_name(web_search_model)
|
50
|
+
if model.support_web():
|
51
|
+
PrettyOutput.print("▶️ 使用配置的 Web 搜索平台读取网页...", OutputType.INFO)
|
52
|
+
model.set_web(True)
|
53
|
+
model.set_suppress_output(False) # type: ignore
|
54
|
+
prompt = f"""请帮我处理这个网页:{url}
|
55
|
+
用户的具体需求是:{want}
|
56
|
+
请按照以下要求输出结果:
|
57
|
+
1. 使用Markdown格式
|
58
|
+
2. 包含网页标题
|
59
|
+
3. 根据用户需求提供准确、完整的信息"""
|
60
|
+
response = model.chat_until_success(prompt) # type: ignore
|
61
|
+
return {"success": True, "stdout": response, "stderr": ""}
|
62
|
+
|
63
|
+
# 2) 然后尝试使用默认平台(normal)的 web 能力
|
64
|
+
model = PlatformRegistry().get_normal_platform()
|
65
|
+
if model.support_web():
|
66
|
+
PrettyOutput.print("▶️ 使用默认平台的 Web 能力读取网页...", OutputType.INFO)
|
67
|
+
model.set_web(True)
|
68
|
+
model.set_suppress_output(False) # type: ignore
|
69
|
+
prompt = f"""请帮我处理这个网页:{url}
|
70
|
+
用户的具体需求是:{want}
|
71
|
+
请按照以下要求输出结果:
|
72
|
+
1. 使用Markdown格式
|
73
|
+
2. 包含网页标题
|
74
|
+
3. 根据用户需求提供准确、完整的信息"""
|
75
|
+
response = model.chat_until_success(prompt) # type: ignore
|
76
|
+
return {"success": True, "stdout": response, "stderr": ""}
|
77
|
+
|
78
|
+
# 3) 回退:使用 requests 抓取网页,再用模型分析
|
79
|
+
PrettyOutput.print("ℹ️ 当前模型不支持Web,使用requests抓取网页并进行分析。", OutputType.INFO)
|
80
|
+
try:
|
81
|
+
resp = http_get(url, timeout=10.0, allow_redirects=True)
|
82
|
+
content_md = md(resp.text, strip=["script", "style"])
|
83
|
+
except requests.exceptions.HTTPError as e:
|
84
|
+
PrettyOutput.print(f"⚠️ HTTP错误 {e.response.status_code} 访问 {url}", OutputType.WARNING)
|
85
|
+
return {"success": False, "stdout": "", "stderr": f"HTTP错误:{e.response.status_code}"}
|
86
|
+
except requests.exceptions.RequestException as e:
|
87
|
+
PrettyOutput.print(f"⚠️ 请求错误: {e}", OutputType.WARNING)
|
88
|
+
return {"success": False, "stdout": "", "stderr": f"请求错误:{e}"}
|
89
|
+
|
90
|
+
if not content_md or not content_md.strip():
|
91
|
+
return {"success": False, "stdout": "", "stderr": "无法从网页抓取有效内容。"}
|
92
|
+
|
93
|
+
PrettyOutput.print("🧠 正在分析抓取到的网页内容...", OutputType.INFO)
|
94
|
+
summary_prompt = f"""以下是网页 {url} 的内容(已转换为Markdown):
|
95
|
+
----------------
|
96
|
+
{content_md}
|
97
|
+
----------------
|
98
|
+
请根据用户的具体需求“{want}”进行总结与回答:
|
99
|
+
- 使用Markdown格式
|
100
|
+
- 包含网页标题(若可推断)
|
101
|
+
- 提供准确、完整的信息"""
|
102
|
+
|
103
|
+
model = PlatformRegistry().get_normal_platform()
|
104
|
+
model.set_suppress_output(False) # type: ignore
|
105
|
+
summary = model.chat_until_success(summary_prompt) # type: ignore
|
106
|
+
|
107
|
+
return {"success": True, "stdout": summary, "stderr": ""}
|
108
|
+
|
109
|
+
except Exception as e:
|
110
|
+
PrettyOutput.print(f"读取网页失败: {str(e)}", OutputType.ERROR)
|
111
|
+
return {
|
112
|
+
"success": False,
|
113
|
+
"stdout": "",
|
114
|
+
"stderr": f"Failed to parse webpage: {str(e)}",
|
115
|
+
}
|
116
|
+
|
117
|
+
@staticmethod
|
118
|
+
def check() -> bool:
|
119
|
+
"""工具可用性检查:始终可用;若模型不支持web将回退到requests抓取。"""
|
120
|
+
return True
|
@@ -624,3 +624,11 @@ def is_enable_builtin_config_selector() -> bool:
|
|
624
624
|
return (
|
625
625
|
GLOBAL_CONFIG_DATA.get("JARVIS_ENABLE_STARTUP_CONFIG_SELECTOR", False) is True
|
626
626
|
)
|
627
|
+
|
628
|
+
|
629
|
+
def is_immediate_abort() -> bool:
|
630
|
+
"""
|
631
|
+
是否启用立即中断:当在对话过程中检测到用户中断信号时,立即停止输出并返回。
|
632
|
+
默认关闭
|
633
|
+
"""
|
634
|
+
return GLOBAL_CONFIG_DATA.get("JARVIS_IMMEDIATE_ABORT", False) is True
|
@@ -947,6 +947,15 @@ def _load_and_process_config(jarvis_dir: str, config_file: str) -> None:
|
|
947
947
|
)
|
948
948
|
or changed
|
949
949
|
)
|
950
|
+
changed = (
|
951
|
+
_ask_and_set(
|
952
|
+
"JARVIS_IMMEDIATE_ABORT",
|
953
|
+
"是否启用立即中断?\n- 选择 是/true:在对话输出流的每次迭代中检测到用户中断(例如 Ctrl+C)时,立即返回当前已生成的内容并停止继续输出。\n- 选择 否/false:不会在输出过程中立刻返回,而是按既有流程处理(不中途打断输出)。",
|
954
|
+
False,
|
955
|
+
"bool",
|
956
|
+
)
|
957
|
+
or changed
|
958
|
+
)
|
950
959
|
changed = (
|
951
960
|
_ask_and_set(
|
952
961
|
"JARVIS_ENABLE_STATIC_ANALYSIS",
|
@@ -1,59 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
from typing import Any, Dict
|
3
|
-
|
4
|
-
from jarvis.jarvis_platform.registry import PlatformRegistry
|
5
|
-
from jarvis.jarvis_utils.output import OutputType, PrettyOutput
|
6
|
-
|
7
|
-
|
8
|
-
class WebpageTool:
|
9
|
-
name = "read_webpage"
|
10
|
-
description = "读取网页内容,提取标题、文本和超链接"
|
11
|
-
parameters = {
|
12
|
-
"type": "object",
|
13
|
-
"properties": {
|
14
|
-
"url": {"type": "string", "description": "要读取的网页URL"},
|
15
|
-
"want": {
|
16
|
-
"type": "string",
|
17
|
-
"description": "具体想要从网页获取的信息或回答的问题",
|
18
|
-
"default": "请总结这个网页的主要内容",
|
19
|
-
},
|
20
|
-
},
|
21
|
-
"required": ["url"],
|
22
|
-
}
|
23
|
-
|
24
|
-
def execute(self, args: Dict[str, Any]) -> Dict[str, Any]:
|
25
|
-
"""Read webpage content using Yuanbao model"""
|
26
|
-
try:
|
27
|
-
url = args["url"].strip()
|
28
|
-
want = args.get("want", "请总结这个网页的主要内容")
|
29
|
-
|
30
|
-
# Create Yuanbao model instance
|
31
|
-
model = PlatformRegistry().get_normal_platform()
|
32
|
-
model.set_web(True)
|
33
|
-
model.set_suppress_output(False) # type: ignore
|
34
|
-
|
35
|
-
# Construct prompt based on want parameter
|
36
|
-
prompt = f"""请帮我处理这个网页:{url}
|
37
|
-
用户的具体需求是:{want}
|
38
|
-
请按照以下要求输出结果:
|
39
|
-
1. 使用Markdown格式
|
40
|
-
2. 包含网页标题
|
41
|
-
3. 根据用户需求提供准确、完整的信息"""
|
42
|
-
|
43
|
-
# Get response from Yuanbao model
|
44
|
-
response = model.chat_until_success(prompt) # type: ignore
|
45
|
-
|
46
|
-
return {"success": True, "stdout": response, "stderr": ""}
|
47
|
-
|
48
|
-
except Exception as e:
|
49
|
-
PrettyOutput.print(f"读取网页失败: {str(e)}", OutputType.ERROR)
|
50
|
-
return {
|
51
|
-
"success": False,
|
52
|
-
"stdout": "",
|
53
|
-
"stderr": f"Failed to parse webpage: {str(e)}",
|
54
|
-
}
|
55
|
-
|
56
|
-
@staticmethod
|
57
|
-
def check() -> bool:
|
58
|
-
"""检查当前平台是否支持web功能"""
|
59
|
-
return PlatformRegistry().get_normal_platform().support_web()
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/agent_manager.py
RENAMED
File without changes
|
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/config_editor.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/memory_manager.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/output_handler.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/prompt_builder.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/prompts.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/protocols.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/session_manager.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/share_manager.py
RENAMED
File without changes
|
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/task_analyzer.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/task_manager.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_agent/tool_executor.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_agent/__init__.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_agent/code_agent.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_code_agent/lint.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_git_squash/__init__.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_git_squash/main.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_mcp/sse_mcp_client.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_mcp/stdio_mcp_client.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_methodology/main.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_multi_agent/__init__.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_multi_agent/main.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_platform/__init__.py
RENAMED
File without changes
|
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_platform/human.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_platform/kimi.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_platform/openai.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_platform/registry.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_platform/tongyi.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_platform/yuanbao.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_rag/embedding_manager.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_rag/llm_interface.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_rag/query_rewriter.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_rag/rag_pipeline.py
RENAMED
File without changes
|
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_rag/retriever.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_smart_shell/__init__.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_smart_shell/main.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_stats/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_stats/storage.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_stats/visualizer.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/__init__.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/ask_user.py
RENAMED
File without changes
|
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/clear_memory.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/cli/__init__.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/cli/main.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/edit_file.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/execute_script.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/file_analyzer.py
RENAMED
File without changes
|
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/methodology.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/read_code.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/registry.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/retrieve_memory.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/rewrite_file.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/save_memory.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/search_web.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_tools/virtual_tty.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_utils/__init__.py
RENAMED
File without changes
|
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_utils/clipboard.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_utils/embedding.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_utils/file_processors.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_utils/git_utils.py
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_utils/globals.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{jarvis_ai_assistant-0.3.17 → jarvis_ai_assistant-0.3.18}/src/jarvis/jarvis_utils/methodology.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|