jarvis-ai-assistant 0.7.16__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.16.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.16.dist-info/RECORD +0 -218
- {jarvis_ai_assistant-0.7.16.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/WHEEL +0 -0
- {jarvis_ai_assistant-0.7.16.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/entry_points.txt +0 -0
- {jarvis_ai_assistant-0.7.16.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/licenses/LICENSE +0 -0
- {jarvis_ai_assistant-0.7.16.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/top_level.txt +0 -0
|
@@ -7,51 +7,58 @@ This module automatically registers all language extractors.
|
|
|
7
7
|
# Import all language extractors to trigger registration
|
|
8
8
|
try:
|
|
9
9
|
from .python_extractor import register_python_extractor
|
|
10
|
+
|
|
10
11
|
register_python_extractor()
|
|
11
12
|
except (ImportError, Exception):
|
|
12
13
|
pass
|
|
13
14
|
|
|
14
15
|
try:
|
|
15
16
|
from .rust_extractor import register_rust_extractor
|
|
17
|
+
|
|
16
18
|
register_rust_extractor()
|
|
17
19
|
except (ImportError, Exception):
|
|
18
20
|
pass
|
|
19
21
|
|
|
20
22
|
try:
|
|
21
23
|
from .go_extractor import register_go_extractor
|
|
24
|
+
|
|
22
25
|
register_go_extractor()
|
|
23
26
|
except (ImportError, Exception):
|
|
24
27
|
pass
|
|
25
28
|
|
|
26
29
|
try:
|
|
27
30
|
from .c_extractor import register_c_extractor
|
|
31
|
+
|
|
28
32
|
register_c_extractor()
|
|
29
33
|
except (ImportError, Exception):
|
|
30
34
|
pass
|
|
31
35
|
|
|
32
36
|
try:
|
|
33
37
|
from .cpp_extractor import register_cpp_extractor
|
|
38
|
+
|
|
34
39
|
register_cpp_extractor()
|
|
35
40
|
except (ImportError, Exception):
|
|
36
41
|
pass
|
|
37
42
|
|
|
38
43
|
try:
|
|
39
44
|
from .javascript_extractor import register_javascript_extractor
|
|
45
|
+
|
|
40
46
|
register_javascript_extractor()
|
|
41
47
|
except (ImportError, Exception):
|
|
42
48
|
pass
|
|
43
49
|
|
|
44
50
|
try:
|
|
45
51
|
from .typescript_extractor import register_typescript_extractor
|
|
52
|
+
|
|
46
53
|
register_typescript_extractor()
|
|
47
54
|
except (ImportError, Exception):
|
|
48
55
|
pass
|
|
49
56
|
|
|
50
57
|
try:
|
|
51
58
|
from .java_extractor import register_java_extractor
|
|
59
|
+
|
|
52
60
|
register_java_extractor()
|
|
53
61
|
except (ImportError, Exception):
|
|
54
62
|
pass
|
|
55
63
|
|
|
56
64
|
__all__ = []
|
|
57
|
-
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""C language symbol extractor."""
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Any
|
|
5
|
+
from typing import Optional
|
|
5
6
|
|
|
6
7
|
from jarvis.jarvis_agent.file_context_handler import register_language_extractor
|
|
7
8
|
|
|
@@ -9,7 +10,10 @@ from jarvis.jarvis_agent.file_context_handler import register_language_extractor
|
|
|
9
10
|
def create_c_extractor() -> Optional[Any]:
|
|
10
11
|
"""Create C symbol extractor using tree-sitter."""
|
|
11
12
|
try:
|
|
12
|
-
from jarvis.jarvis_code_agent.code_analyzer.languages.c_cpp_language import
|
|
13
|
+
from jarvis.jarvis_code_agent.code_analyzer.languages.c_cpp_language import (
|
|
14
|
+
CSymbolExtractor,
|
|
15
|
+
)
|
|
16
|
+
|
|
13
17
|
return CSymbolExtractor()
|
|
14
18
|
except (ImportError, RuntimeError, Exception):
|
|
15
19
|
return None
|
|
@@ -17,5 +21,4 @@ def create_c_extractor() -> Optional[Any]:
|
|
|
17
21
|
|
|
18
22
|
def register_c_extractor() -> None:
|
|
19
23
|
"""Register C extractor for .c and .h files."""
|
|
20
|
-
register_language_extractor([
|
|
21
|
-
|
|
24
|
+
register_language_extractor([".c", ".h"], create_c_extractor)
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""C++ language symbol extractor."""
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Any
|
|
5
|
+
from typing import Optional
|
|
5
6
|
|
|
6
7
|
from jarvis.jarvis_agent.file_context_handler import register_language_extractor
|
|
7
8
|
|
|
@@ -9,7 +10,10 @@ from jarvis.jarvis_agent.file_context_handler import register_language_extractor
|
|
|
9
10
|
def create_cpp_extractor() -> Optional[Any]:
|
|
10
11
|
"""Create C++ symbol extractor using tree-sitter."""
|
|
11
12
|
try:
|
|
12
|
-
from jarvis.jarvis_code_agent.code_analyzer.languages.c_cpp_language import
|
|
13
|
+
from jarvis.jarvis_code_agent.code_analyzer.languages.c_cpp_language import (
|
|
14
|
+
CppSymbolExtractor,
|
|
15
|
+
)
|
|
16
|
+
|
|
13
17
|
return CppSymbolExtractor()
|
|
14
18
|
except (ImportError, RuntimeError, Exception):
|
|
15
19
|
return None
|
|
@@ -17,5 +21,6 @@ def create_cpp_extractor() -> Optional[Any]:
|
|
|
17
21
|
|
|
18
22
|
def register_cpp_extractor() -> None:
|
|
19
23
|
"""Register C++ extractor for .cpp, .cc, .cxx, .hpp, .hxx files."""
|
|
20
|
-
register_language_extractor(
|
|
21
|
-
|
|
24
|
+
register_language_extractor(
|
|
25
|
+
[".cpp", ".cc", ".cxx", ".hpp", ".hxx"], create_cpp_extractor
|
|
26
|
+
)
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""Go language symbol extractor."""
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Any
|
|
5
|
+
from typing import Optional
|
|
5
6
|
|
|
6
7
|
from jarvis.jarvis_agent.file_context_handler import register_language_extractor
|
|
7
8
|
|
|
@@ -9,7 +10,10 @@ from jarvis.jarvis_agent.file_context_handler import register_language_extractor
|
|
|
9
10
|
def create_go_extractor() -> Optional[Any]:
|
|
10
11
|
"""Create Go symbol extractor using tree-sitter."""
|
|
11
12
|
try:
|
|
12
|
-
from jarvis.jarvis_code_agent.code_analyzer.languages.go_language import
|
|
13
|
+
from jarvis.jarvis_code_agent.code_analyzer.languages.go_language import (
|
|
14
|
+
GoSymbolExtractor,
|
|
15
|
+
)
|
|
16
|
+
|
|
13
17
|
return GoSymbolExtractor()
|
|
14
18
|
except (ImportError, RuntimeError, Exception):
|
|
15
19
|
return None
|
|
@@ -17,5 +21,4 @@ def create_go_extractor() -> Optional[Any]:
|
|
|
17
21
|
|
|
18
22
|
def register_go_extractor() -> None:
|
|
19
23
|
"""Register Go extractor for .go files."""
|
|
20
|
-
register_language_extractor(
|
|
21
|
-
|
|
24
|
+
register_language_extractor(".go", create_go_extractor)
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""Java language symbol extractor."""
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Any
|
|
5
|
+
from typing import Optional
|
|
5
6
|
|
|
6
7
|
from jarvis.jarvis_agent.file_context_handler import register_language_extractor
|
|
7
8
|
|
|
@@ -9,15 +10,20 @@ from jarvis.jarvis_agent.file_context_handler import register_language_extractor
|
|
|
9
10
|
def create_java_extractor() -> Optional[Any]:
|
|
10
11
|
"""Create Java symbol extractor using tree-sitter."""
|
|
11
12
|
try:
|
|
12
|
-
from jarvis.jarvis_code_agent.code_analyzer.languages.java_language import
|
|
13
|
+
from jarvis.jarvis_code_agent.code_analyzer.languages.java_language import (
|
|
14
|
+
JavaSymbolExtractor,
|
|
15
|
+
)
|
|
16
|
+
|
|
13
17
|
return JavaSymbolExtractor()
|
|
14
18
|
except (ImportError, RuntimeError, Exception):
|
|
15
19
|
# 如果 code_analyzer 中没有 Java 支持,尝试直接使用 tree-sitter
|
|
16
20
|
try:
|
|
17
|
-
from tree_sitter import Language, Parser
|
|
18
21
|
import tree_sitter_java
|
|
22
|
+
from tree_sitter import Language
|
|
23
|
+
from tree_sitter import Parser
|
|
24
|
+
|
|
19
25
|
from jarvis.jarvis_code_agent.code_analyzer.symbol_extractor import Symbol
|
|
20
|
-
|
|
26
|
+
|
|
21
27
|
JAVA_LANGUAGE = tree_sitter_java.language()
|
|
22
28
|
JAVA_SYMBOL_QUERY = """
|
|
23
29
|
(method_declaration
|
|
@@ -33,8 +39,8 @@ def create_java_extractor() -> Optional[Any]:
|
|
|
33
39
|
(variable_declarator
|
|
34
40
|
name: (identifier) @field.name))
|
|
35
41
|
"""
|
|
36
|
-
|
|
37
|
-
class
|
|
42
|
+
|
|
43
|
+
class TreeSitterJavaSymbolExtractor:
|
|
38
44
|
def __init__(self):
|
|
39
45
|
# 如果传入的是 PyCapsule,需要转换为 Language 对象
|
|
40
46
|
if not isinstance(JAVA_LANGUAGE, Language):
|
|
@@ -45,13 +51,13 @@ def create_java_extractor() -> Optional[Any]:
|
|
|
45
51
|
# 使用 language 属性而不是 set_language 方法
|
|
46
52
|
self.parser.language = self.language
|
|
47
53
|
self.symbol_query = JAVA_SYMBOL_QUERY
|
|
48
|
-
|
|
54
|
+
|
|
49
55
|
def extract_symbols(self, file_path: str, content: str) -> list:
|
|
50
56
|
try:
|
|
51
57
|
tree = self.parser.parse(bytes(content, "utf8"))
|
|
52
58
|
query = self.language.query(self.symbol_query)
|
|
53
|
-
captures = query.captures(tree.root_node)
|
|
54
|
-
|
|
59
|
+
captures = query.captures(tree.root_node) # type: ignore[attr-defined]
|
|
60
|
+
|
|
55
61
|
symbols = []
|
|
56
62
|
for node, name in captures:
|
|
57
63
|
kind_map = {
|
|
@@ -62,23 +68,24 @@ def create_java_extractor() -> Optional[Any]:
|
|
|
62
68
|
}
|
|
63
69
|
symbol_kind = kind_map.get(name)
|
|
64
70
|
if symbol_kind:
|
|
65
|
-
symbols.append(
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
71
|
+
symbols.append(
|
|
72
|
+
Symbol(
|
|
73
|
+
name=node.text.decode("utf8"),
|
|
74
|
+
kind=symbol_kind,
|
|
75
|
+
file_path=file_path,
|
|
76
|
+
line_start=node.start_point[0] + 1,
|
|
77
|
+
line_end=node.end_point[0] + 1,
|
|
78
|
+
)
|
|
79
|
+
)
|
|
72
80
|
return symbols
|
|
73
81
|
except Exception:
|
|
74
82
|
return []
|
|
75
|
-
|
|
76
|
-
return
|
|
83
|
+
|
|
84
|
+
return TreeSitterJavaSymbolExtractor()
|
|
77
85
|
except (ImportError, Exception):
|
|
78
86
|
return None
|
|
79
87
|
|
|
80
88
|
|
|
81
89
|
def register_java_extractor() -> None:
|
|
82
90
|
"""Register Java extractor for .java files."""
|
|
83
|
-
register_language_extractor(
|
|
84
|
-
|
|
91
|
+
register_language_extractor(".java", create_java_extractor)
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""JavaScript language symbol extractor."""
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Any
|
|
5
|
+
from typing import List
|
|
6
|
+
from typing import Optional
|
|
5
7
|
|
|
6
8
|
from jarvis.jarvis_agent.file_context_handler import register_language_extractor
|
|
7
9
|
|
|
@@ -9,10 +11,12 @@ from jarvis.jarvis_agent.file_context_handler import register_language_extractor
|
|
|
9
11
|
def create_javascript_extractor() -> Optional[Any]:
|
|
10
12
|
"""Create JavaScript symbol extractor using tree-sitter."""
|
|
11
13
|
try:
|
|
12
|
-
from tree_sitter import Language, Parser
|
|
13
14
|
import tree_sitter_javascript
|
|
15
|
+
from tree_sitter import Language
|
|
16
|
+
from tree_sitter import Parser
|
|
17
|
+
|
|
14
18
|
from jarvis.jarvis_code_agent.code_analyzer.symbol_extractor import Symbol
|
|
15
|
-
|
|
19
|
+
|
|
16
20
|
JS_LANGUAGE = tree_sitter_javascript.language()
|
|
17
21
|
JS_SYMBOL_QUERY = """
|
|
18
22
|
(function_declaration
|
|
@@ -28,7 +32,7 @@ def create_javascript_extractor() -> Optional[Any]:
|
|
|
28
32
|
(variable_declarator
|
|
29
33
|
name: (identifier) @variable.name))
|
|
30
34
|
"""
|
|
31
|
-
|
|
35
|
+
|
|
32
36
|
class JSSymbolExtractor:
|
|
33
37
|
def __init__(self):
|
|
34
38
|
# 如果传入的是 PyCapsule,需要转换为 Language 对象
|
|
@@ -40,13 +44,13 @@ def create_javascript_extractor() -> Optional[Any]:
|
|
|
40
44
|
# 使用 language 属性而不是 set_language 方法
|
|
41
45
|
self.parser.language = self.language
|
|
42
46
|
self.symbol_query = JS_SYMBOL_QUERY
|
|
43
|
-
|
|
47
|
+
|
|
44
48
|
def extract_symbols(self, file_path: str, content: str) -> List[Any]:
|
|
45
49
|
try:
|
|
46
50
|
tree = self.parser.parse(bytes(content, "utf8"))
|
|
47
51
|
query = self.language.query(self.symbol_query)
|
|
48
|
-
captures = query.captures(tree.root_node)
|
|
49
|
-
|
|
52
|
+
captures = query.captures(tree.root_node) # type: ignore[attr-defined]
|
|
53
|
+
|
|
50
54
|
symbols = []
|
|
51
55
|
for node, name in captures:
|
|
52
56
|
kind_map = {
|
|
@@ -57,17 +61,19 @@ def create_javascript_extractor() -> Optional[Any]:
|
|
|
57
61
|
}
|
|
58
62
|
symbol_kind = kind_map.get(name)
|
|
59
63
|
if symbol_kind:
|
|
60
|
-
symbols.append(
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
symbols.append(
|
|
65
|
+
Symbol(
|
|
66
|
+
name=node.text.decode("utf8"),
|
|
67
|
+
kind=symbol_kind,
|
|
68
|
+
file_path=file_path,
|
|
69
|
+
line_start=node.start_point[0] + 1,
|
|
70
|
+
line_end=node.end_point[0] + 1,
|
|
71
|
+
)
|
|
72
|
+
)
|
|
67
73
|
return symbols
|
|
68
74
|
except Exception:
|
|
69
75
|
return []
|
|
70
|
-
|
|
76
|
+
|
|
71
77
|
return JSSymbolExtractor()
|
|
72
78
|
except (ImportError, Exception):
|
|
73
79
|
return None
|
|
@@ -75,5 +81,4 @@ def create_javascript_extractor() -> Optional[Any]:
|
|
|
75
81
|
|
|
76
82
|
def register_javascript_extractor() -> None:
|
|
77
83
|
"""Register JavaScript extractor for .js and .jsx files."""
|
|
78
|
-
register_language_extractor([
|
|
79
|
-
|
|
84
|
+
register_language_extractor([".js", ".jsx"], create_javascript_extractor)
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""Python language symbol extractor."""
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Any
|
|
5
|
+
from typing import Optional
|
|
5
6
|
|
|
6
7
|
from jarvis.jarvis_agent.file_context_handler import register_language_extractor
|
|
7
8
|
|
|
@@ -9,7 +10,10 @@ from jarvis.jarvis_agent.file_context_handler import register_language_extractor
|
|
|
9
10
|
def create_python_extractor() -> Optional[Any]:
|
|
10
11
|
"""Create Python symbol extractor using AST."""
|
|
11
12
|
try:
|
|
12
|
-
from jarvis.jarvis_code_agent.code_analyzer.languages.python_language import
|
|
13
|
+
from jarvis.jarvis_code_agent.code_analyzer.languages.python_language import (
|
|
14
|
+
PythonSymbolExtractor,
|
|
15
|
+
)
|
|
16
|
+
|
|
13
17
|
return PythonSymbolExtractor()
|
|
14
18
|
except (ImportError, Exception):
|
|
15
19
|
return None
|
|
@@ -17,5 +21,4 @@ def create_python_extractor() -> Optional[Any]:
|
|
|
17
21
|
|
|
18
22
|
def register_python_extractor() -> None:
|
|
19
23
|
"""Register Python extractor for .py and .pyw files."""
|
|
20
|
-
register_language_extractor([
|
|
21
|
-
|
|
24
|
+
register_language_extractor([".py", ".pyw"], create_python_extractor)
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""Rust language symbol extractor."""
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Any
|
|
5
|
+
from typing import Optional
|
|
5
6
|
|
|
6
7
|
from jarvis.jarvis_agent.file_context_handler import register_language_extractor
|
|
7
8
|
|
|
@@ -9,7 +10,10 @@ from jarvis.jarvis_agent.file_context_handler import register_language_extractor
|
|
|
9
10
|
def create_rust_extractor() -> Optional[Any]:
|
|
10
11
|
"""Create Rust symbol extractor using tree-sitter."""
|
|
11
12
|
try:
|
|
12
|
-
from jarvis.jarvis_code_agent.code_analyzer.languages.rust_language import
|
|
13
|
+
from jarvis.jarvis_code_agent.code_analyzer.languages.rust_language import (
|
|
14
|
+
RustSymbolExtractor,
|
|
15
|
+
)
|
|
16
|
+
|
|
13
17
|
return RustSymbolExtractor()
|
|
14
18
|
except (ImportError, RuntimeError, Exception):
|
|
15
19
|
return None
|
|
@@ -17,5 +21,4 @@ def create_rust_extractor() -> Optional[Any]:
|
|
|
17
21
|
|
|
18
22
|
def register_rust_extractor() -> None:
|
|
19
23
|
"""Register Rust extractor for .rs files."""
|
|
20
|
-
register_language_extractor(
|
|
21
|
-
|
|
24
|
+
register_language_extractor(".rs", create_rust_extractor)
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""TypeScript language symbol extractor."""
|
|
3
3
|
|
|
4
|
-
from typing import
|
|
4
|
+
from typing import Any
|
|
5
|
+
from typing import List
|
|
6
|
+
from typing import Optional
|
|
5
7
|
|
|
6
8
|
from jarvis.jarvis_agent.file_context_handler import register_language_extractor
|
|
7
9
|
|
|
@@ -9,10 +11,12 @@ from jarvis.jarvis_agent.file_context_handler import register_language_extractor
|
|
|
9
11
|
def create_typescript_extractor() -> Optional[Any]:
|
|
10
12
|
"""Create TypeScript symbol extractor using tree-sitter."""
|
|
11
13
|
try:
|
|
12
|
-
from tree_sitter import Language, Parser
|
|
13
14
|
import tree_sitter_typescript
|
|
15
|
+
from tree_sitter import Language
|
|
16
|
+
from tree_sitter import Parser
|
|
17
|
+
|
|
14
18
|
from jarvis.jarvis_code_agent.code_analyzer.symbol_extractor import Symbol
|
|
15
|
-
|
|
19
|
+
|
|
16
20
|
# tree-sitter-typescript 使用 language_typescript() 和 language_tsx()
|
|
17
21
|
TS_LANGUAGE = tree_sitter_typescript.language_typescript()
|
|
18
22
|
TS_SYMBOL_QUERY = """
|
|
@@ -32,7 +36,7 @@ def create_typescript_extractor() -> Optional[Any]:
|
|
|
32
36
|
(variable_declarator
|
|
33
37
|
name: (identifier) @variable.name))
|
|
34
38
|
"""
|
|
35
|
-
|
|
39
|
+
|
|
36
40
|
class TSSymbolExtractor:
|
|
37
41
|
def __init__(self):
|
|
38
42
|
# 如果传入的是 PyCapsule,需要转换为 Language 对象
|
|
@@ -44,13 +48,13 @@ def create_typescript_extractor() -> Optional[Any]:
|
|
|
44
48
|
# 使用 language 属性而不是 set_language 方法
|
|
45
49
|
self.parser.language = self.language
|
|
46
50
|
self.symbol_query = TS_SYMBOL_QUERY
|
|
47
|
-
|
|
51
|
+
|
|
48
52
|
def extract_symbols(self, file_path: str, content: str) -> List[Any]:
|
|
49
53
|
try:
|
|
50
54
|
tree = self.parser.parse(bytes(content, "utf8"))
|
|
51
55
|
query = self.language.query(self.symbol_query)
|
|
52
|
-
captures = query.captures(tree.root_node)
|
|
53
|
-
|
|
56
|
+
captures = query.captures(tree.root_node) # type: ignore[attr-defined]
|
|
57
|
+
|
|
54
58
|
symbols = []
|
|
55
59
|
for node, name in captures:
|
|
56
60
|
kind_map = {
|
|
@@ -62,17 +66,19 @@ def create_typescript_extractor() -> Optional[Any]:
|
|
|
62
66
|
}
|
|
63
67
|
symbol_kind = kind_map.get(name)
|
|
64
68
|
if symbol_kind:
|
|
65
|
-
symbols.append(
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
symbols.append(
|
|
70
|
+
Symbol(
|
|
71
|
+
name=node.text.decode("utf8"),
|
|
72
|
+
kind=symbol_kind,
|
|
73
|
+
file_path=file_path,
|
|
74
|
+
line_start=node.start_point[0] + 1,
|
|
75
|
+
line_end=node.end_point[0] + 1,
|
|
76
|
+
)
|
|
77
|
+
)
|
|
72
78
|
return symbols
|
|
73
79
|
except Exception:
|
|
74
80
|
return []
|
|
75
|
-
|
|
81
|
+
|
|
76
82
|
return TSSymbolExtractor()
|
|
77
83
|
except (ImportError, Exception):
|
|
78
84
|
return None
|
|
@@ -80,5 +86,4 @@ def create_typescript_extractor() -> Optional[Any]:
|
|
|
80
86
|
|
|
81
87
|
def register_typescript_extractor() -> None:
|
|
82
88
|
"""Register TypeScript extractor for .ts and .tsx files."""
|
|
83
|
-
register_language_extractor([
|
|
84
|
-
|
|
89
|
+
register_language_extractor([".ts", ".tsx"], create_typescript_extractor)
|