jarvis-ai-assistant 0.3.30__py3-none-any.whl → 0.7.0__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 +289 -87
- jarvis/jarvis_agent/agent_manager.py +17 -8
- jarvis/jarvis_agent/edit_file_handler.py +374 -86
- jarvis/jarvis_agent/event_bus.py +1 -1
- jarvis/jarvis_agent/file_context_handler.py +79 -0
- jarvis/jarvis_agent/jarvis.py +601 -43
- jarvis/jarvis_agent/main.py +32 -2
- jarvis/jarvis_agent/rewrite_file_handler.py +141 -0
- jarvis/jarvis_agent/run_loop.py +38 -5
- jarvis/jarvis_agent/share_manager.py +8 -1
- jarvis/jarvis_agent/stdio_redirect.py +295 -0
- jarvis/jarvis_agent/task_analyzer.py +5 -2
- jarvis/jarvis_agent/task_planner.py +496 -0
- jarvis/jarvis_agent/utils.py +5 -1
- jarvis/jarvis_agent/web_bridge.py +189 -0
- jarvis/jarvis_agent/web_output_sink.py +53 -0
- jarvis/jarvis_agent/web_server.py +751 -0
- jarvis/jarvis_c2rust/__init__.py +26 -0
- jarvis/jarvis_c2rust/cli.py +613 -0
- jarvis/jarvis_c2rust/collector.py +258 -0
- jarvis/jarvis_c2rust/library_replacer.py +1122 -0
- jarvis/jarvis_c2rust/llm_module_agent.py +1300 -0
- jarvis/jarvis_c2rust/optimizer.py +960 -0
- jarvis/jarvis_c2rust/scanner.py +1681 -0
- jarvis/jarvis_c2rust/transpiler.py +2325 -0
- jarvis/jarvis_code_agent/build_validation_config.py +133 -0
- jarvis/jarvis_code_agent/code_agent.py +1171 -94
- jarvis/jarvis_code_agent/code_analyzer/__init__.py +62 -0
- jarvis/jarvis_code_agent/code_analyzer/base_language.py +74 -0
- jarvis/jarvis_code_agent/code_analyzer/build_validator/__init__.py +44 -0
- jarvis/jarvis_code_agent/code_analyzer/build_validator/base.py +102 -0
- jarvis/jarvis_code_agent/code_analyzer/build_validator/cmake.py +59 -0
- jarvis/jarvis_code_agent/code_analyzer/build_validator/detector.py +125 -0
- jarvis/jarvis_code_agent/code_analyzer/build_validator/fallback.py +69 -0
- jarvis/jarvis_code_agent/code_analyzer/build_validator/go.py +38 -0
- jarvis/jarvis_code_agent/code_analyzer/build_validator/java_gradle.py +44 -0
- jarvis/jarvis_code_agent/code_analyzer/build_validator/java_maven.py +38 -0
- jarvis/jarvis_code_agent/code_analyzer/build_validator/makefile.py +50 -0
- jarvis/jarvis_code_agent/code_analyzer/build_validator/nodejs.py +93 -0
- jarvis/jarvis_code_agent/code_analyzer/build_validator/python.py +129 -0
- jarvis/jarvis_code_agent/code_analyzer/build_validator/rust.py +54 -0
- jarvis/jarvis_code_agent/code_analyzer/build_validator/validator.py +154 -0
- jarvis/jarvis_code_agent/code_analyzer/build_validator.py +43 -0
- jarvis/jarvis_code_agent/code_analyzer/context_manager.py +363 -0
- jarvis/jarvis_code_agent/code_analyzer/context_recommender.py +18 -0
- jarvis/jarvis_code_agent/code_analyzer/dependency_analyzer.py +132 -0
- jarvis/jarvis_code_agent/code_analyzer/file_ignore.py +330 -0
- jarvis/jarvis_code_agent/code_analyzer/impact_analyzer.py +781 -0
- jarvis/jarvis_code_agent/code_analyzer/language_registry.py +185 -0
- jarvis/jarvis_code_agent/code_analyzer/language_support.py +89 -0
- jarvis/jarvis_code_agent/code_analyzer/languages/__init__.py +31 -0
- jarvis/jarvis_code_agent/code_analyzer/languages/c_cpp_language.py +231 -0
- jarvis/jarvis_code_agent/code_analyzer/languages/go_language.py +183 -0
- jarvis/jarvis_code_agent/code_analyzer/languages/python_language.py +219 -0
- jarvis/jarvis_code_agent/code_analyzer/languages/rust_language.py +209 -0
- jarvis/jarvis_code_agent/code_analyzer/llm_context_recommender.py +451 -0
- jarvis/jarvis_code_agent/code_analyzer/symbol_extractor.py +77 -0
- jarvis/jarvis_code_agent/code_analyzer/tree_sitter_extractor.py +48 -0
- jarvis/jarvis_code_agent/lint.py +270 -8
- jarvis/jarvis_code_agent/utils.py +142 -0
- jarvis/jarvis_code_analysis/code_review.py +483 -569
- jarvis/jarvis_data/config_schema.json +97 -8
- jarvis/jarvis_git_utils/git_commiter.py +38 -26
- jarvis/jarvis_mcp/sse_mcp_client.py +2 -2
- jarvis/jarvis_mcp/stdio_mcp_client.py +1 -1
- jarvis/jarvis_memory_organizer/memory_organizer.py +1 -1
- jarvis/jarvis_multi_agent/__init__.py +239 -25
- jarvis/jarvis_multi_agent/main.py +37 -1
- jarvis/jarvis_platform/base.py +103 -51
- jarvis/jarvis_platform/openai.py +26 -1
- jarvis/jarvis_platform/yuanbao.py +1 -1
- jarvis/jarvis_platform_manager/service.py +2 -2
- jarvis/jarvis_rag/cli.py +4 -4
- jarvis/jarvis_sec/__init__.py +3605 -0
- jarvis/jarvis_sec/checkers/__init__.py +32 -0
- jarvis/jarvis_sec/checkers/c_checker.py +2680 -0
- jarvis/jarvis_sec/checkers/rust_checker.py +1108 -0
- jarvis/jarvis_sec/cli.py +116 -0
- jarvis/jarvis_sec/report.py +257 -0
- jarvis/jarvis_sec/status.py +264 -0
- jarvis/jarvis_sec/types.py +20 -0
- jarvis/jarvis_sec/workflow.py +219 -0
- jarvis/jarvis_stats/cli.py +1 -1
- jarvis/jarvis_stats/stats.py +1 -1
- jarvis/jarvis_stats/visualizer.py +1 -1
- jarvis/jarvis_tools/cli/main.py +1 -0
- jarvis/jarvis_tools/execute_script.py +46 -9
- jarvis/jarvis_tools/generate_new_tool.py +3 -1
- jarvis/jarvis_tools/read_code.py +275 -12
- jarvis/jarvis_tools/read_symbols.py +141 -0
- jarvis/jarvis_tools/read_webpage.py +5 -3
- jarvis/jarvis_tools/registry.py +73 -35
- jarvis/jarvis_tools/search_web.py +15 -11
- jarvis/jarvis_tools/sub_agent.py +24 -42
- jarvis/jarvis_tools/sub_code_agent.py +14 -13
- jarvis/jarvis_tools/virtual_tty.py +1 -1
- jarvis/jarvis_utils/config.py +187 -35
- jarvis/jarvis_utils/embedding.py +3 -0
- jarvis/jarvis_utils/git_utils.py +181 -6
- jarvis/jarvis_utils/globals.py +3 -3
- jarvis/jarvis_utils/http.py +1 -1
- jarvis/jarvis_utils/input.py +78 -2
- jarvis/jarvis_utils/methodology.py +25 -19
- jarvis/jarvis_utils/utils.py +644 -359
- {jarvis_ai_assistant-0.3.30.dist-info → jarvis_ai_assistant-0.7.0.dist-info}/METADATA +85 -1
- jarvis_ai_assistant-0.7.0.dist-info/RECORD +192 -0
- {jarvis_ai_assistant-0.3.30.dist-info → jarvis_ai_assistant-0.7.0.dist-info}/entry_points.txt +4 -0
- jarvis/jarvis_agent/config.py +0 -92
- jarvis/jarvis_tools/edit_file.py +0 -179
- jarvis/jarvis_tools/rewrite_file.py +0 -191
- jarvis_ai_assistant-0.3.30.dist-info/RECORD +0 -137
- {jarvis_ai_assistant-0.3.30.dist-info → jarvis_ai_assistant-0.7.0.dist-info}/WHEEL +0 -0
- {jarvis_ai_assistant-0.3.30.dist-info → jarvis_ai_assistant-0.7.0.dist-info}/licenses/LICENSE +0 -0
- {jarvis_ai_assistant-0.3.30.dist-info → jarvis_ai_assistant-0.7.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
|
|
4
|
+
"""
|
|
5
|
+
构建验证配置管理模块
|
|
6
|
+
|
|
7
|
+
管理项目级别的构建验证配置,支持禁用构建验证并仅进行基础静态检查。
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import os
|
|
11
|
+
import yaml
|
|
12
|
+
from typing import Optional, Dict, Any
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
|
|
15
|
+
from jarvis.jarvis_utils.output import OutputType, PrettyOutput
|
|
16
|
+
|
|
17
|
+
CONFIG_FILE_NAME = "build_validation_config.yaml"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class BuildValidationConfig:
|
|
21
|
+
"""构建验证配置管理器"""
|
|
22
|
+
|
|
23
|
+
def __init__(self, project_root: str):
|
|
24
|
+
self.project_root = project_root
|
|
25
|
+
self.config_dir = os.path.join(project_root, ".jarvis")
|
|
26
|
+
self.config_path = os.path.join(self.config_dir, CONFIG_FILE_NAME)
|
|
27
|
+
self._config: Optional[Dict[str, Any]] = None
|
|
28
|
+
|
|
29
|
+
def _ensure_config_dir(self) -> None:
|
|
30
|
+
"""确保配置目录存在"""
|
|
31
|
+
if not os.path.exists(self.config_dir):
|
|
32
|
+
os.makedirs(self.config_dir, exist_ok=True)
|
|
33
|
+
|
|
34
|
+
def _load_config(self) -> Dict[str, Any]:
|
|
35
|
+
"""加载配置文件"""
|
|
36
|
+
if self._config is not None:
|
|
37
|
+
return self._config
|
|
38
|
+
|
|
39
|
+
if not os.path.exists(self.config_path):
|
|
40
|
+
self._config = {}
|
|
41
|
+
return self._config
|
|
42
|
+
|
|
43
|
+
try:
|
|
44
|
+
with open(self.config_path, "r", encoding="utf-8") as f:
|
|
45
|
+
self._config = yaml.safe_load(f) or {}
|
|
46
|
+
return self._config
|
|
47
|
+
except Exception as e:
|
|
48
|
+
# 配置文件损坏时,返回空配置
|
|
49
|
+
PrettyOutput.print(f"加载构建验证配置失败: {e},使用默认配置", OutputType.WARNING)
|
|
50
|
+
self._config = {}
|
|
51
|
+
return self._config
|
|
52
|
+
|
|
53
|
+
def _save_config(self) -> bool:
|
|
54
|
+
"""保存配置文件"""
|
|
55
|
+
try:
|
|
56
|
+
self._ensure_config_dir()
|
|
57
|
+
with open(self.config_path, "w", encoding="utf-8") as f:
|
|
58
|
+
yaml.safe_dump(self._config, f, allow_unicode=True, default_flow_style=False)
|
|
59
|
+
return True
|
|
60
|
+
except Exception as e:
|
|
61
|
+
PrettyOutput.print(f"保存构建验证配置失败: {e}", OutputType.ERROR)
|
|
62
|
+
return False
|
|
63
|
+
|
|
64
|
+
def is_build_validation_disabled(self) -> bool:
|
|
65
|
+
"""检查是否已禁用构建验证"""
|
|
66
|
+
config = self._load_config()
|
|
67
|
+
return config.get("disable_build_validation", False)
|
|
68
|
+
|
|
69
|
+
def disable_build_validation(self, reason: Optional[str] = None) -> bool:
|
|
70
|
+
"""禁用构建验证
|
|
71
|
+
|
|
72
|
+
Args:
|
|
73
|
+
reason: 禁用原因(可选)
|
|
74
|
+
|
|
75
|
+
Returns:
|
|
76
|
+
bool: 是否成功保存配置
|
|
77
|
+
"""
|
|
78
|
+
config = self._load_config()
|
|
79
|
+
config["disable_build_validation"] = True
|
|
80
|
+
if reason:
|
|
81
|
+
config["disable_reason"] = reason
|
|
82
|
+
config["disabled_at"] = str(Path(self.project_root).resolve())
|
|
83
|
+
self._config = config
|
|
84
|
+
return self._save_config()
|
|
85
|
+
|
|
86
|
+
def enable_build_validation(self) -> bool:
|
|
87
|
+
"""重新启用构建验证"""
|
|
88
|
+
config = self._load_config()
|
|
89
|
+
config["disable_build_validation"] = False
|
|
90
|
+
# 保留历史信息,但清除禁用标志
|
|
91
|
+
self._config = config
|
|
92
|
+
return self._save_config()
|
|
93
|
+
|
|
94
|
+
def get_disable_reason(self) -> Optional[str]:
|
|
95
|
+
"""获取禁用原因"""
|
|
96
|
+
config = self._load_config()
|
|
97
|
+
return config.get("disable_reason")
|
|
98
|
+
|
|
99
|
+
def has_been_asked(self) -> bool:
|
|
100
|
+
"""检查是否已经询问过用户"""
|
|
101
|
+
config = self._load_config()
|
|
102
|
+
return config.get("has_been_asked", False)
|
|
103
|
+
|
|
104
|
+
def mark_as_asked(self) -> bool:
|
|
105
|
+
"""标记为已询问"""
|
|
106
|
+
config = self._load_config()
|
|
107
|
+
config["has_been_asked"] = True
|
|
108
|
+
self._config = config
|
|
109
|
+
return self._save_config()
|
|
110
|
+
|
|
111
|
+
def get_selected_build_system(self) -> Optional[str]:
|
|
112
|
+
"""获取用户选择的构建系统
|
|
113
|
+
|
|
114
|
+
Returns:
|
|
115
|
+
构建系统名称(如 "rust", "python"),如果未选择则返回None
|
|
116
|
+
"""
|
|
117
|
+
config = self._load_config()
|
|
118
|
+
return config.get("selected_build_system")
|
|
119
|
+
|
|
120
|
+
def set_selected_build_system(self, build_system: str) -> bool:
|
|
121
|
+
"""保存用户选择的构建系统
|
|
122
|
+
|
|
123
|
+
Args:
|
|
124
|
+
build_system: 构建系统名称(如 "rust", "python")
|
|
125
|
+
|
|
126
|
+
Returns:
|
|
127
|
+
bool: 是否成功保存配置
|
|
128
|
+
"""
|
|
129
|
+
config = self._load_config()
|
|
130
|
+
config["selected_build_system"] = build_system
|
|
131
|
+
self._config = config
|
|
132
|
+
return self._save_config()
|
|
133
|
+
|