jarvis-ai-assistant 0.7.8__py3-none-any.whl → 1.0.2__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 +567 -222
- jarvis/jarvis_agent/agent_manager.py +19 -12
- jarvis/jarvis_agent/builtin_input_handler.py +79 -11
- jarvis/jarvis_agent/config_editor.py +7 -2
- jarvis/jarvis_agent/event_bus.py +24 -13
- jarvis/jarvis_agent/events.py +19 -1
- jarvis/jarvis_agent/file_context_handler.py +67 -64
- jarvis/jarvis_agent/file_methodology_manager.py +38 -24
- jarvis/jarvis_agent/jarvis.py +186 -114
- jarvis/jarvis_agent/language_extractors/__init__.py +8 -1
- jarvis/jarvis_agent/language_extractors/c_extractor.py +7 -4
- jarvis/jarvis_agent/language_extractors/cpp_extractor.py +9 -4
- jarvis/jarvis_agent/language_extractors/go_extractor.py +7 -4
- jarvis/jarvis_agent/language_extractors/java_extractor.py +27 -20
- jarvis/jarvis_agent/language_extractors/javascript_extractor.py +22 -17
- jarvis/jarvis_agent/language_extractors/python_extractor.py +7 -4
- jarvis/jarvis_agent/language_extractors/rust_extractor.py +7 -4
- jarvis/jarvis_agent/language_extractors/typescript_extractor.py +22 -17
- jarvis/jarvis_agent/language_support_info.py +250 -219
- jarvis/jarvis_agent/main.py +19 -23
- jarvis/jarvis_agent/memory_manager.py +9 -6
- jarvis/jarvis_agent/methodology_share_manager.py +21 -15
- jarvis/jarvis_agent/output_handler.py +4 -2
- jarvis/jarvis_agent/prompt_builder.py +7 -6
- jarvis/jarvis_agent/prompt_manager.py +113 -8
- jarvis/jarvis_agent/prompts.py +317 -85
- jarvis/jarvis_agent/protocols.py +5 -2
- jarvis/jarvis_agent/run_loop.py +192 -32
- jarvis/jarvis_agent/session_manager.py +7 -3
- jarvis/jarvis_agent/share_manager.py +23 -13
- jarvis/jarvis_agent/shell_input_handler.py +12 -8
- jarvis/jarvis_agent/stdio_redirect.py +25 -26
- jarvis/jarvis_agent/task_analyzer.py +29 -23
- jarvis/jarvis_agent/task_list.py +869 -0
- jarvis/jarvis_agent/task_manager.py +26 -23
- jarvis/jarvis_agent/tool_executor.py +6 -5
- jarvis/jarvis_agent/tool_share_manager.py +24 -14
- jarvis/jarvis_agent/user_interaction.py +3 -3
- jarvis/jarvis_agent/utils.py +9 -1
- jarvis/jarvis_agent/web_bridge.py +37 -17
- jarvis/jarvis_agent/web_output_sink.py +5 -2
- jarvis/jarvis_agent/web_server.py +165 -36
- jarvis/jarvis_c2rust/__init__.py +1 -1
- jarvis/jarvis_c2rust/cli.py +260 -141
- jarvis/jarvis_c2rust/collector.py +37 -18
- jarvis/jarvis_c2rust/constants.py +60 -0
- jarvis/jarvis_c2rust/library_replacer.py +242 -1010
- jarvis/jarvis_c2rust/library_replacer_checkpoint.py +133 -0
- jarvis/jarvis_c2rust/library_replacer_llm.py +287 -0
- jarvis/jarvis_c2rust/library_replacer_loader.py +191 -0
- jarvis/jarvis_c2rust/library_replacer_output.py +134 -0
- jarvis/jarvis_c2rust/library_replacer_prompts.py +124 -0
- jarvis/jarvis_c2rust/library_replacer_utils.py +188 -0
- jarvis/jarvis_c2rust/llm_module_agent.py +98 -1044
- jarvis/jarvis_c2rust/llm_module_agent_apply.py +170 -0
- jarvis/jarvis_c2rust/llm_module_agent_executor.py +288 -0
- jarvis/jarvis_c2rust/llm_module_agent_loader.py +170 -0
- jarvis/jarvis_c2rust/llm_module_agent_prompts.py +268 -0
- jarvis/jarvis_c2rust/llm_module_agent_types.py +57 -0
- jarvis/jarvis_c2rust/llm_module_agent_utils.py +150 -0
- jarvis/jarvis_c2rust/llm_module_agent_validator.py +119 -0
- jarvis/jarvis_c2rust/loaders.py +28 -10
- jarvis/jarvis_c2rust/models.py +5 -2
- jarvis/jarvis_c2rust/optimizer.py +192 -1974
- jarvis/jarvis_c2rust/optimizer_build_fix.py +286 -0
- jarvis/jarvis_c2rust/optimizer_clippy.py +766 -0
- jarvis/jarvis_c2rust/optimizer_config.py +49 -0
- jarvis/jarvis_c2rust/optimizer_docs.py +183 -0
- jarvis/jarvis_c2rust/optimizer_options.py +48 -0
- jarvis/jarvis_c2rust/optimizer_progress.py +469 -0
- jarvis/jarvis_c2rust/optimizer_report.py +52 -0
- jarvis/jarvis_c2rust/optimizer_unsafe.py +309 -0
- jarvis/jarvis_c2rust/optimizer_utils.py +469 -0
- jarvis/jarvis_c2rust/optimizer_visibility.py +185 -0
- jarvis/jarvis_c2rust/scanner.py +229 -166
- jarvis/jarvis_c2rust/transpiler.py +531 -2732
- jarvis/jarvis_c2rust/transpiler_agents.py +503 -0
- jarvis/jarvis_c2rust/transpiler_build.py +1294 -0
- jarvis/jarvis_c2rust/transpiler_codegen.py +204 -0
- jarvis/jarvis_c2rust/transpiler_compile.py +146 -0
- jarvis/jarvis_c2rust/transpiler_config.py +178 -0
- jarvis/jarvis_c2rust/transpiler_context.py +122 -0
- jarvis/jarvis_c2rust/transpiler_executor.py +516 -0
- jarvis/jarvis_c2rust/transpiler_generation.py +278 -0
- jarvis/jarvis_c2rust/transpiler_git.py +163 -0
- jarvis/jarvis_c2rust/transpiler_mod_utils.py +225 -0
- jarvis/jarvis_c2rust/transpiler_modules.py +336 -0
- jarvis/jarvis_c2rust/transpiler_planning.py +394 -0
- jarvis/jarvis_c2rust/transpiler_review.py +1196 -0
- jarvis/jarvis_c2rust/transpiler_symbols.py +176 -0
- jarvis/jarvis_c2rust/utils.py +269 -79
- jarvis/jarvis_code_agent/after_change.py +233 -0
- jarvis/jarvis_code_agent/build_validation_config.py +37 -30
- jarvis/jarvis_code_agent/builtin_rules.py +68 -0
- jarvis/jarvis_code_agent/code_agent.py +976 -1517
- jarvis/jarvis_code_agent/code_agent_build.py +227 -0
- jarvis/jarvis_code_agent/code_agent_diff.py +246 -0
- jarvis/jarvis_code_agent/code_agent_git.py +525 -0
- jarvis/jarvis_code_agent/code_agent_impact.py +177 -0
- jarvis/jarvis_code_agent/code_agent_lint.py +283 -0
- jarvis/jarvis_code_agent/code_agent_llm.py +159 -0
- jarvis/jarvis_code_agent/code_agent_postprocess.py +105 -0
- jarvis/jarvis_code_agent/code_agent_prompts.py +46 -0
- jarvis/jarvis_code_agent/code_agent_rules.py +305 -0
- jarvis/jarvis_code_agent/code_analyzer/__init__.py +52 -48
- jarvis/jarvis_code_agent/code_analyzer/base_language.py +12 -10
- jarvis/jarvis_code_agent/code_analyzer/build_validator/__init__.py +12 -11
- jarvis/jarvis_code_agent/code_analyzer/build_validator/base.py +16 -12
- jarvis/jarvis_code_agent/code_analyzer/build_validator/cmake.py +26 -17
- jarvis/jarvis_code_agent/code_analyzer/build_validator/detector.py +558 -104
- jarvis/jarvis_code_agent/code_analyzer/build_validator/fallback.py +27 -16
- jarvis/jarvis_code_agent/code_analyzer/build_validator/go.py +22 -18
- jarvis/jarvis_code_agent/code_analyzer/build_validator/java_gradle.py +21 -16
- jarvis/jarvis_code_agent/code_analyzer/build_validator/java_maven.py +20 -16
- jarvis/jarvis_code_agent/code_analyzer/build_validator/makefile.py +27 -16
- jarvis/jarvis_code_agent/code_analyzer/build_validator/nodejs.py +47 -23
- jarvis/jarvis_code_agent/code_analyzer/build_validator/python.py +71 -37
- jarvis/jarvis_code_agent/code_analyzer/build_validator/rust.py +162 -35
- jarvis/jarvis_code_agent/code_analyzer/build_validator/validator.py +111 -57
- jarvis/jarvis_code_agent/code_analyzer/build_validator.py +18 -12
- jarvis/jarvis_code_agent/code_analyzer/context_manager.py +185 -183
- jarvis/jarvis_code_agent/code_analyzer/context_recommender.py +2 -1
- jarvis/jarvis_code_agent/code_analyzer/dependency_analyzer.py +24 -15
- jarvis/jarvis_code_agent/code_analyzer/file_ignore.py +227 -141
- jarvis/jarvis_code_agent/code_analyzer/impact_analyzer.py +321 -247
- jarvis/jarvis_code_agent/code_analyzer/language_registry.py +37 -29
- jarvis/jarvis_code_agent/code_analyzer/language_support.py +21 -13
- jarvis/jarvis_code_agent/code_analyzer/languages/__init__.py +15 -9
- jarvis/jarvis_code_agent/code_analyzer/languages/c_cpp_language.py +75 -45
- jarvis/jarvis_code_agent/code_analyzer/languages/go_language.py +87 -52
- jarvis/jarvis_code_agent/code_analyzer/languages/java_language.py +84 -51
- jarvis/jarvis_code_agent/code_analyzer/languages/javascript_language.py +94 -64
- jarvis/jarvis_code_agent/code_analyzer/languages/python_language.py +109 -71
- jarvis/jarvis_code_agent/code_analyzer/languages/rust_language.py +97 -63
- jarvis/jarvis_code_agent/code_analyzer/languages/typescript_language.py +103 -69
- jarvis/jarvis_code_agent/code_analyzer/llm_context_recommender.py +271 -268
- jarvis/jarvis_code_agent/code_analyzer/symbol_extractor.py +76 -64
- jarvis/jarvis_code_agent/code_analyzer/tree_sitter_extractor.py +92 -19
- jarvis/jarvis_code_agent/diff_visualizer.py +998 -0
- jarvis/jarvis_code_agent/lint.py +223 -524
- jarvis/jarvis_code_agent/rule_share_manager.py +158 -0
- jarvis/jarvis_code_agent/rules/clean_code.md +144 -0
- jarvis/jarvis_code_agent/rules/code_review.md +115 -0
- jarvis/jarvis_code_agent/rules/documentation.md +165 -0
- jarvis/jarvis_code_agent/rules/generate_rules.md +52 -0
- jarvis/jarvis_code_agent/rules/performance.md +158 -0
- jarvis/jarvis_code_agent/rules/refactoring.md +139 -0
- jarvis/jarvis_code_agent/rules/security.md +160 -0
- jarvis/jarvis_code_agent/rules/tdd.md +78 -0
- jarvis/jarvis_code_agent/test_rules/cpp_test.md +118 -0
- jarvis/jarvis_code_agent/test_rules/go_test.md +98 -0
- jarvis/jarvis_code_agent/test_rules/java_test.md +99 -0
- jarvis/jarvis_code_agent/test_rules/javascript_test.md +113 -0
- jarvis/jarvis_code_agent/test_rules/php_test.md +117 -0
- jarvis/jarvis_code_agent/test_rules/python_test.md +91 -0
- jarvis/jarvis_code_agent/test_rules/ruby_test.md +102 -0
- jarvis/jarvis_code_agent/test_rules/rust_test.md +86 -0
- jarvis/jarvis_code_agent/utils.py +36 -26
- jarvis/jarvis_code_analysis/checklists/loader.py +21 -21
- jarvis/jarvis_code_analysis/code_review.py +64 -33
- jarvis/jarvis_data/config_schema.json +285 -192
- jarvis/jarvis_git_squash/main.py +8 -6
- jarvis/jarvis_git_utils/git_commiter.py +53 -76
- jarvis/jarvis_mcp/__init__.py +5 -2
- jarvis/jarvis_mcp/sse_mcp_client.py +40 -30
- jarvis/jarvis_mcp/stdio_mcp_client.py +27 -19
- jarvis/jarvis_mcp/streamable_mcp_client.py +35 -26
- jarvis/jarvis_memory_organizer/memory_organizer.py +78 -55
- jarvis/jarvis_methodology/main.py +48 -39
- jarvis/jarvis_multi_agent/__init__.py +56 -23
- jarvis/jarvis_multi_agent/main.py +15 -18
- jarvis/jarvis_platform/base.py +179 -111
- jarvis/jarvis_platform/human.py +27 -16
- jarvis/jarvis_platform/kimi.py +52 -45
- jarvis/jarvis_platform/openai.py +101 -40
- jarvis/jarvis_platform/registry.py +51 -33
- jarvis/jarvis_platform/tongyi.py +68 -38
- jarvis/jarvis_platform/yuanbao.py +59 -43
- jarvis/jarvis_platform_manager/main.py +68 -76
- jarvis/jarvis_platform_manager/service.py +24 -14
- jarvis/jarvis_rag/README_CONFIG.md +314 -0
- jarvis/jarvis_rag/README_DYNAMIC_LOADING.md +311 -0
- jarvis/jarvis_rag/README_ONLINE_MODELS.md +230 -0
- jarvis/jarvis_rag/__init__.py +57 -4
- jarvis/jarvis_rag/cache.py +3 -1
- jarvis/jarvis_rag/cli.py +48 -68
- jarvis/jarvis_rag/embedding_interface.py +39 -0
- jarvis/jarvis_rag/embedding_manager.py +7 -230
- jarvis/jarvis_rag/embeddings/__init__.py +41 -0
- jarvis/jarvis_rag/embeddings/base.py +114 -0
- jarvis/jarvis_rag/embeddings/cohere.py +66 -0
- jarvis/jarvis_rag/embeddings/edgefn.py +117 -0
- jarvis/jarvis_rag/embeddings/local.py +260 -0
- jarvis/jarvis_rag/embeddings/openai.py +62 -0
- jarvis/jarvis_rag/embeddings/registry.py +293 -0
- jarvis/jarvis_rag/llm_interface.py +8 -6
- jarvis/jarvis_rag/query_rewriter.py +8 -9
- jarvis/jarvis_rag/rag_pipeline.py +61 -52
- jarvis/jarvis_rag/reranker.py +7 -75
- jarvis/jarvis_rag/reranker_interface.py +32 -0
- jarvis/jarvis_rag/rerankers/__init__.py +41 -0
- jarvis/jarvis_rag/rerankers/base.py +109 -0
- jarvis/jarvis_rag/rerankers/cohere.py +67 -0
- jarvis/jarvis_rag/rerankers/edgefn.py +140 -0
- jarvis/jarvis_rag/rerankers/jina.py +79 -0
- jarvis/jarvis_rag/rerankers/local.py +89 -0
- jarvis/jarvis_rag/rerankers/registry.py +293 -0
- jarvis/jarvis_rag/retriever.py +58 -43
- jarvis/jarvis_sec/__init__.py +66 -141
- jarvis/jarvis_sec/agents.py +21 -17
- jarvis/jarvis_sec/analysis.py +80 -33
- jarvis/jarvis_sec/checkers/__init__.py +7 -13
- jarvis/jarvis_sec/checkers/c_checker.py +356 -164
- jarvis/jarvis_sec/checkers/rust_checker.py +47 -29
- jarvis/jarvis_sec/cli.py +43 -21
- jarvis/jarvis_sec/clustering.py +430 -272
- jarvis/jarvis_sec/file_manager.py +99 -55
- jarvis/jarvis_sec/parsers.py +9 -6
- jarvis/jarvis_sec/prompts.py +4 -3
- jarvis/jarvis_sec/report.py +44 -22
- jarvis/jarvis_sec/review.py +180 -107
- jarvis/jarvis_sec/status.py +50 -41
- jarvis/jarvis_sec/types.py +3 -0
- jarvis/jarvis_sec/utils.py +160 -83
- jarvis/jarvis_sec/verification.py +411 -181
- jarvis/jarvis_sec/workflow.py +132 -21
- jarvis/jarvis_smart_shell/main.py +28 -41
- jarvis/jarvis_stats/cli.py +14 -12
- jarvis/jarvis_stats/stats.py +28 -19
- jarvis/jarvis_stats/storage.py +14 -8
- jarvis/jarvis_stats/visualizer.py +12 -7
- jarvis/jarvis_tools/base.py +5 -2
- jarvis/jarvis_tools/clear_memory.py +13 -9
- jarvis/jarvis_tools/cli/main.py +23 -18
- jarvis/jarvis_tools/edit_file.py +572 -873
- jarvis/jarvis_tools/execute_script.py +10 -7
- jarvis/jarvis_tools/file_analyzer.py +7 -8
- jarvis/jarvis_tools/meta_agent.py +287 -0
- jarvis/jarvis_tools/methodology.py +5 -3
- jarvis/jarvis_tools/read_code.py +305 -1438
- jarvis/jarvis_tools/read_symbols.py +50 -17
- jarvis/jarvis_tools/read_webpage.py +19 -18
- jarvis/jarvis_tools/registry.py +435 -156
- jarvis/jarvis_tools/retrieve_memory.py +16 -11
- jarvis/jarvis_tools/save_memory.py +8 -6
- jarvis/jarvis_tools/search_web.py +31 -31
- jarvis/jarvis_tools/sub_agent.py +32 -28
- jarvis/jarvis_tools/sub_code_agent.py +44 -60
- jarvis/jarvis_tools/task_list_manager.py +1811 -0
- jarvis/jarvis_tools/virtual_tty.py +29 -19
- jarvis/jarvis_utils/__init__.py +4 -0
- jarvis/jarvis_utils/builtin_replace_map.py +2 -1
- jarvis/jarvis_utils/clipboard.py +9 -8
- jarvis/jarvis_utils/collections.py +331 -0
- jarvis/jarvis_utils/config.py +699 -194
- jarvis/jarvis_utils/dialogue_recorder.py +294 -0
- jarvis/jarvis_utils/embedding.py +6 -3
- jarvis/jarvis_utils/file_processors.py +7 -1
- jarvis/jarvis_utils/fzf.py +9 -3
- jarvis/jarvis_utils/git_utils.py +71 -42
- jarvis/jarvis_utils/globals.py +116 -32
- jarvis/jarvis_utils/http.py +6 -2
- jarvis/jarvis_utils/input.py +318 -83
- jarvis/jarvis_utils/jsonnet_compat.py +119 -104
- jarvis/jarvis_utils/methodology.py +37 -28
- jarvis/jarvis_utils/output.py +201 -44
- jarvis/jarvis_utils/utils.py +986 -628
- {jarvis_ai_assistant-0.7.8.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/METADATA +49 -33
- jarvis_ai_assistant-1.0.2.dist-info/RECORD +304 -0
- jarvis/jarvis_code_agent/code_analyzer/structured_code.py +0 -556
- jarvis/jarvis_tools/generate_new_tool.py +0 -205
- jarvis/jarvis_tools/lsp_client.py +0 -1552
- jarvis/jarvis_tools/rewrite_file.py +0 -105
- jarvis_ai_assistant-0.7.8.dist-info/RECORD +0 -218
- {jarvis_ai_assistant-0.7.8.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/WHEEL +0 -0
- {jarvis_ai_assistant-0.7.8.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/entry_points.txt +0 -0
- {jarvis_ai_assistant-0.7.8.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/licenses/LICENSE +0 -0
- {jarvis_ai_assistant-0.7.8.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/top_level.txt +0 -0
|
@@ -20,21 +20,19 @@
|
|
|
20
20
|
- 本模块注重正确性/鲁棒性而非性能
|
|
21
21
|
- 不尝试发现传递包含;仅通过添加-I <file.parent>来辅助解析器
|
|
22
22
|
"""
|
|
23
|
+
|
|
23
24
|
from __future__ import annotations
|
|
24
25
|
|
|
25
26
|
from pathlib import Path
|
|
26
|
-
from typing import
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
from jarvis.jarvis_c2rust.scanner import (
|
|
30
|
-
_try_import_libclang,
|
|
31
|
-
find_compile_commands,
|
|
32
|
-
load_compile_commands,
|
|
33
|
-
scan_file,
|
|
34
|
-
)
|
|
35
|
-
|
|
27
|
+
from typing import Dict
|
|
28
|
+
from typing import List
|
|
29
|
+
from typing import Optional
|
|
36
30
|
|
|
37
|
-
|
|
31
|
+
from jarvis.jarvis_c2rust.constants import HEADER_EXTS
|
|
32
|
+
from jarvis.jarvis_c2rust.scanner import _try_import_libclang
|
|
33
|
+
from jarvis.jarvis_c2rust.scanner import find_compile_commands
|
|
34
|
+
from jarvis.jarvis_c2rust.scanner import load_compile_commands
|
|
35
|
+
from jarvis.jarvis_c2rust.scanner import scan_file
|
|
38
36
|
|
|
39
37
|
|
|
40
38
|
def _guess_lang_header_flag(file: Path) -> List[str]:
|
|
@@ -47,7 +45,10 @@ def _guess_lang_header_flag(file: Path) -> List[str]:
|
|
|
47
45
|
# 对于.h文件默认使用C头文件(保守选择)
|
|
48
46
|
return ["-x", "c-header"]
|
|
49
47
|
|
|
50
|
-
|
|
48
|
+
|
|
49
|
+
def _ensure_parse_args_for_header(
|
|
50
|
+
file: Path, base_args: Optional[List[str]]
|
|
51
|
+
) -> List[str]:
|
|
51
52
|
"""
|
|
52
53
|
确保头文件解析所需的最小参数集:
|
|
53
54
|
- 通过-I包含file.parent目录
|
|
@@ -92,6 +93,7 @@ def _ensure_parse_args_for_header(file: Path, base_args: Optional[List[str]]) ->
|
|
|
92
93
|
|
|
93
94
|
return args
|
|
94
95
|
|
|
96
|
+
|
|
95
97
|
def _collect_decl_function_names(cindex, file: Path, args: List[str]) -> List[str]:
|
|
96
98
|
"""
|
|
97
99
|
对于没有内联定义的头文件的回退方案:
|
|
@@ -110,10 +112,19 @@ def _collect_decl_function_names(cindex, file: Path, args: List[str]) -> List[st
|
|
|
110
112
|
kind = node.kind.name
|
|
111
113
|
except Exception:
|
|
112
114
|
kind = ""
|
|
113
|
-
if kind in {
|
|
115
|
+
if kind in {
|
|
116
|
+
"FUNCTION_DECL",
|
|
117
|
+
"CXX_METHOD",
|
|
118
|
+
"FUNCTION_TEMPLATE",
|
|
119
|
+
"CONSTRUCTOR",
|
|
120
|
+
"DESTRUCTOR",
|
|
121
|
+
}:
|
|
114
122
|
loc_file = getattr(getattr(node, "location", None), "file", None)
|
|
115
123
|
try:
|
|
116
|
-
same_file =
|
|
124
|
+
same_file = (
|
|
125
|
+
loc_file is not None
|
|
126
|
+
and Path(loc_file.name).resolve() == file.resolve()
|
|
127
|
+
)
|
|
117
128
|
except Exception:
|
|
118
129
|
same_file = False
|
|
119
130
|
if same_file:
|
|
@@ -133,6 +144,7 @@ def _collect_decl_function_names(cindex, file: Path, args: List[str]) -> List[st
|
|
|
133
144
|
pass
|
|
134
145
|
return names
|
|
135
146
|
|
|
147
|
+
|
|
136
148
|
def collect_function_names(
|
|
137
149
|
files: List[Path],
|
|
138
150
|
out_path: Path,
|
|
@@ -166,7 +178,8 @@ def collect_function_names(
|
|
|
166
178
|
# 准备libclang
|
|
167
179
|
cindex = _try_import_libclang()
|
|
168
180
|
if cindex is None:
|
|
169
|
-
from clang import cindex as _ci
|
|
181
|
+
from clang import cindex as _ci
|
|
182
|
+
|
|
170
183
|
cindex = _ci
|
|
171
184
|
|
|
172
185
|
# 准备compile_commands参数映射(如果提供了根目录则全局一次,否则每个文件单独处理)
|
|
@@ -205,7 +218,11 @@ def collect_function_names(
|
|
|
205
218
|
funcs = scan_file(cindex, hf, args)
|
|
206
219
|
except Exception:
|
|
207
220
|
try:
|
|
208
|
-
funcs = scan_file(
|
|
221
|
+
funcs = scan_file(
|
|
222
|
+
cindex,
|
|
223
|
+
hf,
|
|
224
|
+
_ensure_parse_args_for_header(hf, ["-I", str(hf.parent)]),
|
|
225
|
+
)
|
|
209
226
|
except Exception:
|
|
210
227
|
funcs = []
|
|
211
228
|
|
|
@@ -243,8 +260,10 @@ def collect_function_names(
|
|
|
243
260
|
out_path = Path(out_path)
|
|
244
261
|
out_path.parent.mkdir(parents=True, exist_ok=True)
|
|
245
262
|
try:
|
|
246
|
-
out_path.write_text(
|
|
263
|
+
out_path.write_text(
|
|
264
|
+
"\n".join(ordered_names) + ("\n" if ordered_names else ""), encoding="utf-8"
|
|
265
|
+
)
|
|
247
266
|
except Exception as e:
|
|
248
267
|
raise RuntimeError(f"写入输出文件失败: {out_path}: {e}")
|
|
249
268
|
|
|
250
|
-
return out_path
|
|
269
|
+
return out_path
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
C2Rust 转译器常量定义
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
+
from typing import Set
|
|
7
|
+
|
|
6
8
|
# 数据文件常量
|
|
7
9
|
C2RUST_DIRNAME = ".jarvis/c2rust"
|
|
8
10
|
|
|
@@ -24,3 +26,61 @@ CONSECUTIVE_FIX_FAILURE_THRESHOLD = 10 # 连续修复失败次数阈值,达
|
|
|
24
26
|
MAX_FUNCTION_RETRIES = 10 # 函数重新开始处理的最大次数
|
|
25
27
|
DEFAULT_PLAN_MAX_RETRIES_ENTRY = 5 # run_transpile 入口函数的 plan_max_retries 默认值
|
|
26
28
|
|
|
29
|
+
# 文件扩展名常量
|
|
30
|
+
SOURCE_EXTS: Set[str] = {
|
|
31
|
+
".c",
|
|
32
|
+
".cc",
|
|
33
|
+
".cpp",
|
|
34
|
+
".cxx",
|
|
35
|
+
".C",
|
|
36
|
+
".h",
|
|
37
|
+
".hh",
|
|
38
|
+
".hpp",
|
|
39
|
+
".hxx",
|
|
40
|
+
}
|
|
41
|
+
HEADER_EXTS = {".h", ".hh", ".hpp", ".hxx"}
|
|
42
|
+
|
|
43
|
+
# AST节点类型常量
|
|
44
|
+
TYPE_KINDS: Set[str] = {
|
|
45
|
+
"STRUCT_DECL",
|
|
46
|
+
"UNION_DECL",
|
|
47
|
+
"ENUM_DECL",
|
|
48
|
+
"CXX_RECORD_DECL", # C++ class/struct/union
|
|
49
|
+
"TYPEDEF_DECL",
|
|
50
|
+
"TYPE_ALIAS_DECL",
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
# 运行状态文件
|
|
54
|
+
RUN_STATE_JSON = "run_state.json"
|
|
55
|
+
|
|
56
|
+
# Library Replacer 相关常量
|
|
57
|
+
# LLM评估重试配置
|
|
58
|
+
MAX_LLM_RETRIES = 3 # LLM评估最大重试次数
|
|
59
|
+
|
|
60
|
+
# 源码片段读取配置
|
|
61
|
+
DEFAULT_SOURCE_SNIPPET_MAX_LINES = 200 # 默认源码片段最大行数
|
|
62
|
+
SUBTREE_SOURCE_SNIPPET_MAX_LINES = 120 # 子树提示词中源码片段最大行数
|
|
63
|
+
|
|
64
|
+
# 子树提示词构建配置
|
|
65
|
+
MAX_SUBTREE_NODES_META = 200 # 子树节点元数据列表最大长度
|
|
66
|
+
MAX_SUBTREE_EDGES = 400 # 子树边列表最大长度
|
|
67
|
+
MAX_DOT_EDGES = 200 # DOT图边数阈值(超过此值不生成DOT)
|
|
68
|
+
MAX_CHILD_SAMPLES = 2 # 子节点采样数量
|
|
69
|
+
MAX_SOURCE_SAMPLES = 3 # 代表性源码样本最大数量(注释说明)
|
|
70
|
+
|
|
71
|
+
# 显示配置
|
|
72
|
+
MAX_NOTES_DISPLAY_LENGTH = 200 # 备注显示最大长度
|
|
73
|
+
|
|
74
|
+
# 输出文件路径配置
|
|
75
|
+
DEFAULT_SYMBOLS_OUTPUT = "symbols_library_pruned.jsonl" # 默认符号表输出文件名
|
|
76
|
+
DEFAULT_MAPPING_OUTPUT = "library_replacements.jsonl" # 默认替代映射输出文件名
|
|
77
|
+
SYMBOLS_PRUNE_OUTPUT = "symbols_prune.jsonl" # 兼容符号表输出文件名
|
|
78
|
+
ORDER_PRUNE_OUTPUT = "translation_order_prune.jsonl" # 剪枝阶段转译顺序输出文件名
|
|
79
|
+
ORDER_ALIAS_OUTPUT = "translation_order.jsonl" # 通用转译顺序输出文件名
|
|
80
|
+
DEFAULT_CHECKPOINT_FILE = "library_replacer_checkpoint.json" # 默认检查点文件名
|
|
81
|
+
|
|
82
|
+
# Checkpoint配置
|
|
83
|
+
DEFAULT_CHECKPOINT_INTERVAL = 1 # 默认检查点保存间隔(每评估N个节点保存一次)
|
|
84
|
+
|
|
85
|
+
# JSON格式化配置
|
|
86
|
+
JSON_INDENT = 2 # JSON格式化缩进空格数
|