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.
Files changed (279) hide show
  1. jarvis/__init__.py +1 -1
  2. jarvis/jarvis_agent/__init__.py +567 -222
  3. jarvis/jarvis_agent/agent_manager.py +19 -12
  4. jarvis/jarvis_agent/builtin_input_handler.py +79 -11
  5. jarvis/jarvis_agent/config_editor.py +7 -2
  6. jarvis/jarvis_agent/event_bus.py +24 -13
  7. jarvis/jarvis_agent/events.py +19 -1
  8. jarvis/jarvis_agent/file_context_handler.py +67 -64
  9. jarvis/jarvis_agent/file_methodology_manager.py +38 -24
  10. jarvis/jarvis_agent/jarvis.py +186 -114
  11. jarvis/jarvis_agent/language_extractors/__init__.py +8 -1
  12. jarvis/jarvis_agent/language_extractors/c_extractor.py +7 -4
  13. jarvis/jarvis_agent/language_extractors/cpp_extractor.py +9 -4
  14. jarvis/jarvis_agent/language_extractors/go_extractor.py +7 -4
  15. jarvis/jarvis_agent/language_extractors/java_extractor.py +27 -20
  16. jarvis/jarvis_agent/language_extractors/javascript_extractor.py +22 -17
  17. jarvis/jarvis_agent/language_extractors/python_extractor.py +7 -4
  18. jarvis/jarvis_agent/language_extractors/rust_extractor.py +7 -4
  19. jarvis/jarvis_agent/language_extractors/typescript_extractor.py +22 -17
  20. jarvis/jarvis_agent/language_support_info.py +250 -219
  21. jarvis/jarvis_agent/main.py +19 -23
  22. jarvis/jarvis_agent/memory_manager.py +9 -6
  23. jarvis/jarvis_agent/methodology_share_manager.py +21 -15
  24. jarvis/jarvis_agent/output_handler.py +4 -2
  25. jarvis/jarvis_agent/prompt_builder.py +7 -6
  26. jarvis/jarvis_agent/prompt_manager.py +113 -8
  27. jarvis/jarvis_agent/prompts.py +317 -85
  28. jarvis/jarvis_agent/protocols.py +5 -2
  29. jarvis/jarvis_agent/run_loop.py +192 -32
  30. jarvis/jarvis_agent/session_manager.py +7 -3
  31. jarvis/jarvis_agent/share_manager.py +23 -13
  32. jarvis/jarvis_agent/shell_input_handler.py +12 -8
  33. jarvis/jarvis_agent/stdio_redirect.py +25 -26
  34. jarvis/jarvis_agent/task_analyzer.py +29 -23
  35. jarvis/jarvis_agent/task_list.py +869 -0
  36. jarvis/jarvis_agent/task_manager.py +26 -23
  37. jarvis/jarvis_agent/tool_executor.py +6 -5
  38. jarvis/jarvis_agent/tool_share_manager.py +24 -14
  39. jarvis/jarvis_agent/user_interaction.py +3 -3
  40. jarvis/jarvis_agent/utils.py +9 -1
  41. jarvis/jarvis_agent/web_bridge.py +37 -17
  42. jarvis/jarvis_agent/web_output_sink.py +5 -2
  43. jarvis/jarvis_agent/web_server.py +165 -36
  44. jarvis/jarvis_c2rust/__init__.py +1 -1
  45. jarvis/jarvis_c2rust/cli.py +260 -141
  46. jarvis/jarvis_c2rust/collector.py +37 -18
  47. jarvis/jarvis_c2rust/constants.py +60 -0
  48. jarvis/jarvis_c2rust/library_replacer.py +242 -1010
  49. jarvis/jarvis_c2rust/library_replacer_checkpoint.py +133 -0
  50. jarvis/jarvis_c2rust/library_replacer_llm.py +287 -0
  51. jarvis/jarvis_c2rust/library_replacer_loader.py +191 -0
  52. jarvis/jarvis_c2rust/library_replacer_output.py +134 -0
  53. jarvis/jarvis_c2rust/library_replacer_prompts.py +124 -0
  54. jarvis/jarvis_c2rust/library_replacer_utils.py +188 -0
  55. jarvis/jarvis_c2rust/llm_module_agent.py +98 -1044
  56. jarvis/jarvis_c2rust/llm_module_agent_apply.py +170 -0
  57. jarvis/jarvis_c2rust/llm_module_agent_executor.py +288 -0
  58. jarvis/jarvis_c2rust/llm_module_agent_loader.py +170 -0
  59. jarvis/jarvis_c2rust/llm_module_agent_prompts.py +268 -0
  60. jarvis/jarvis_c2rust/llm_module_agent_types.py +57 -0
  61. jarvis/jarvis_c2rust/llm_module_agent_utils.py +150 -0
  62. jarvis/jarvis_c2rust/llm_module_agent_validator.py +119 -0
  63. jarvis/jarvis_c2rust/loaders.py +28 -10
  64. jarvis/jarvis_c2rust/models.py +5 -2
  65. jarvis/jarvis_c2rust/optimizer.py +192 -1974
  66. jarvis/jarvis_c2rust/optimizer_build_fix.py +286 -0
  67. jarvis/jarvis_c2rust/optimizer_clippy.py +766 -0
  68. jarvis/jarvis_c2rust/optimizer_config.py +49 -0
  69. jarvis/jarvis_c2rust/optimizer_docs.py +183 -0
  70. jarvis/jarvis_c2rust/optimizer_options.py +48 -0
  71. jarvis/jarvis_c2rust/optimizer_progress.py +469 -0
  72. jarvis/jarvis_c2rust/optimizer_report.py +52 -0
  73. jarvis/jarvis_c2rust/optimizer_unsafe.py +309 -0
  74. jarvis/jarvis_c2rust/optimizer_utils.py +469 -0
  75. jarvis/jarvis_c2rust/optimizer_visibility.py +185 -0
  76. jarvis/jarvis_c2rust/scanner.py +229 -166
  77. jarvis/jarvis_c2rust/transpiler.py +531 -2732
  78. jarvis/jarvis_c2rust/transpiler_agents.py +503 -0
  79. jarvis/jarvis_c2rust/transpiler_build.py +1294 -0
  80. jarvis/jarvis_c2rust/transpiler_codegen.py +204 -0
  81. jarvis/jarvis_c2rust/transpiler_compile.py +146 -0
  82. jarvis/jarvis_c2rust/transpiler_config.py +178 -0
  83. jarvis/jarvis_c2rust/transpiler_context.py +122 -0
  84. jarvis/jarvis_c2rust/transpiler_executor.py +516 -0
  85. jarvis/jarvis_c2rust/transpiler_generation.py +278 -0
  86. jarvis/jarvis_c2rust/transpiler_git.py +163 -0
  87. jarvis/jarvis_c2rust/transpiler_mod_utils.py +225 -0
  88. jarvis/jarvis_c2rust/transpiler_modules.py +336 -0
  89. jarvis/jarvis_c2rust/transpiler_planning.py +394 -0
  90. jarvis/jarvis_c2rust/transpiler_review.py +1196 -0
  91. jarvis/jarvis_c2rust/transpiler_symbols.py +176 -0
  92. jarvis/jarvis_c2rust/utils.py +269 -79
  93. jarvis/jarvis_code_agent/after_change.py +233 -0
  94. jarvis/jarvis_code_agent/build_validation_config.py +37 -30
  95. jarvis/jarvis_code_agent/builtin_rules.py +68 -0
  96. jarvis/jarvis_code_agent/code_agent.py +976 -1517
  97. jarvis/jarvis_code_agent/code_agent_build.py +227 -0
  98. jarvis/jarvis_code_agent/code_agent_diff.py +246 -0
  99. jarvis/jarvis_code_agent/code_agent_git.py +525 -0
  100. jarvis/jarvis_code_agent/code_agent_impact.py +177 -0
  101. jarvis/jarvis_code_agent/code_agent_lint.py +283 -0
  102. jarvis/jarvis_code_agent/code_agent_llm.py +159 -0
  103. jarvis/jarvis_code_agent/code_agent_postprocess.py +105 -0
  104. jarvis/jarvis_code_agent/code_agent_prompts.py +46 -0
  105. jarvis/jarvis_code_agent/code_agent_rules.py +305 -0
  106. jarvis/jarvis_code_agent/code_analyzer/__init__.py +52 -48
  107. jarvis/jarvis_code_agent/code_analyzer/base_language.py +12 -10
  108. jarvis/jarvis_code_agent/code_analyzer/build_validator/__init__.py +12 -11
  109. jarvis/jarvis_code_agent/code_analyzer/build_validator/base.py +16 -12
  110. jarvis/jarvis_code_agent/code_analyzer/build_validator/cmake.py +26 -17
  111. jarvis/jarvis_code_agent/code_analyzer/build_validator/detector.py +558 -104
  112. jarvis/jarvis_code_agent/code_analyzer/build_validator/fallback.py +27 -16
  113. jarvis/jarvis_code_agent/code_analyzer/build_validator/go.py +22 -18
  114. jarvis/jarvis_code_agent/code_analyzer/build_validator/java_gradle.py +21 -16
  115. jarvis/jarvis_code_agent/code_analyzer/build_validator/java_maven.py +20 -16
  116. jarvis/jarvis_code_agent/code_analyzer/build_validator/makefile.py +27 -16
  117. jarvis/jarvis_code_agent/code_analyzer/build_validator/nodejs.py +47 -23
  118. jarvis/jarvis_code_agent/code_analyzer/build_validator/python.py +71 -37
  119. jarvis/jarvis_code_agent/code_analyzer/build_validator/rust.py +162 -35
  120. jarvis/jarvis_code_agent/code_analyzer/build_validator/validator.py +111 -57
  121. jarvis/jarvis_code_agent/code_analyzer/build_validator.py +18 -12
  122. jarvis/jarvis_code_agent/code_analyzer/context_manager.py +185 -183
  123. jarvis/jarvis_code_agent/code_analyzer/context_recommender.py +2 -1
  124. jarvis/jarvis_code_agent/code_analyzer/dependency_analyzer.py +24 -15
  125. jarvis/jarvis_code_agent/code_analyzer/file_ignore.py +227 -141
  126. jarvis/jarvis_code_agent/code_analyzer/impact_analyzer.py +321 -247
  127. jarvis/jarvis_code_agent/code_analyzer/language_registry.py +37 -29
  128. jarvis/jarvis_code_agent/code_analyzer/language_support.py +21 -13
  129. jarvis/jarvis_code_agent/code_analyzer/languages/__init__.py +15 -9
  130. jarvis/jarvis_code_agent/code_analyzer/languages/c_cpp_language.py +75 -45
  131. jarvis/jarvis_code_agent/code_analyzer/languages/go_language.py +87 -52
  132. jarvis/jarvis_code_agent/code_analyzer/languages/java_language.py +84 -51
  133. jarvis/jarvis_code_agent/code_analyzer/languages/javascript_language.py +94 -64
  134. jarvis/jarvis_code_agent/code_analyzer/languages/python_language.py +109 -71
  135. jarvis/jarvis_code_agent/code_analyzer/languages/rust_language.py +97 -63
  136. jarvis/jarvis_code_agent/code_analyzer/languages/typescript_language.py +103 -69
  137. jarvis/jarvis_code_agent/code_analyzer/llm_context_recommender.py +271 -268
  138. jarvis/jarvis_code_agent/code_analyzer/symbol_extractor.py +76 -64
  139. jarvis/jarvis_code_agent/code_analyzer/tree_sitter_extractor.py +92 -19
  140. jarvis/jarvis_code_agent/diff_visualizer.py +998 -0
  141. jarvis/jarvis_code_agent/lint.py +223 -524
  142. jarvis/jarvis_code_agent/rule_share_manager.py +158 -0
  143. jarvis/jarvis_code_agent/rules/clean_code.md +144 -0
  144. jarvis/jarvis_code_agent/rules/code_review.md +115 -0
  145. jarvis/jarvis_code_agent/rules/documentation.md +165 -0
  146. jarvis/jarvis_code_agent/rules/generate_rules.md +52 -0
  147. jarvis/jarvis_code_agent/rules/performance.md +158 -0
  148. jarvis/jarvis_code_agent/rules/refactoring.md +139 -0
  149. jarvis/jarvis_code_agent/rules/security.md +160 -0
  150. jarvis/jarvis_code_agent/rules/tdd.md +78 -0
  151. jarvis/jarvis_code_agent/test_rules/cpp_test.md +118 -0
  152. jarvis/jarvis_code_agent/test_rules/go_test.md +98 -0
  153. jarvis/jarvis_code_agent/test_rules/java_test.md +99 -0
  154. jarvis/jarvis_code_agent/test_rules/javascript_test.md +113 -0
  155. jarvis/jarvis_code_agent/test_rules/php_test.md +117 -0
  156. jarvis/jarvis_code_agent/test_rules/python_test.md +91 -0
  157. jarvis/jarvis_code_agent/test_rules/ruby_test.md +102 -0
  158. jarvis/jarvis_code_agent/test_rules/rust_test.md +86 -0
  159. jarvis/jarvis_code_agent/utils.py +36 -26
  160. jarvis/jarvis_code_analysis/checklists/loader.py +21 -21
  161. jarvis/jarvis_code_analysis/code_review.py +64 -33
  162. jarvis/jarvis_data/config_schema.json +285 -192
  163. jarvis/jarvis_git_squash/main.py +8 -6
  164. jarvis/jarvis_git_utils/git_commiter.py +53 -76
  165. jarvis/jarvis_mcp/__init__.py +5 -2
  166. jarvis/jarvis_mcp/sse_mcp_client.py +40 -30
  167. jarvis/jarvis_mcp/stdio_mcp_client.py +27 -19
  168. jarvis/jarvis_mcp/streamable_mcp_client.py +35 -26
  169. jarvis/jarvis_memory_organizer/memory_organizer.py +78 -55
  170. jarvis/jarvis_methodology/main.py +48 -39
  171. jarvis/jarvis_multi_agent/__init__.py +56 -23
  172. jarvis/jarvis_multi_agent/main.py +15 -18
  173. jarvis/jarvis_platform/base.py +179 -111
  174. jarvis/jarvis_platform/human.py +27 -16
  175. jarvis/jarvis_platform/kimi.py +52 -45
  176. jarvis/jarvis_platform/openai.py +101 -40
  177. jarvis/jarvis_platform/registry.py +51 -33
  178. jarvis/jarvis_platform/tongyi.py +68 -38
  179. jarvis/jarvis_platform/yuanbao.py +59 -43
  180. jarvis/jarvis_platform_manager/main.py +68 -76
  181. jarvis/jarvis_platform_manager/service.py +24 -14
  182. jarvis/jarvis_rag/README_CONFIG.md +314 -0
  183. jarvis/jarvis_rag/README_DYNAMIC_LOADING.md +311 -0
  184. jarvis/jarvis_rag/README_ONLINE_MODELS.md +230 -0
  185. jarvis/jarvis_rag/__init__.py +57 -4
  186. jarvis/jarvis_rag/cache.py +3 -1
  187. jarvis/jarvis_rag/cli.py +48 -68
  188. jarvis/jarvis_rag/embedding_interface.py +39 -0
  189. jarvis/jarvis_rag/embedding_manager.py +7 -230
  190. jarvis/jarvis_rag/embeddings/__init__.py +41 -0
  191. jarvis/jarvis_rag/embeddings/base.py +114 -0
  192. jarvis/jarvis_rag/embeddings/cohere.py +66 -0
  193. jarvis/jarvis_rag/embeddings/edgefn.py +117 -0
  194. jarvis/jarvis_rag/embeddings/local.py +260 -0
  195. jarvis/jarvis_rag/embeddings/openai.py +62 -0
  196. jarvis/jarvis_rag/embeddings/registry.py +293 -0
  197. jarvis/jarvis_rag/llm_interface.py +8 -6
  198. jarvis/jarvis_rag/query_rewriter.py +8 -9
  199. jarvis/jarvis_rag/rag_pipeline.py +61 -52
  200. jarvis/jarvis_rag/reranker.py +7 -75
  201. jarvis/jarvis_rag/reranker_interface.py +32 -0
  202. jarvis/jarvis_rag/rerankers/__init__.py +41 -0
  203. jarvis/jarvis_rag/rerankers/base.py +109 -0
  204. jarvis/jarvis_rag/rerankers/cohere.py +67 -0
  205. jarvis/jarvis_rag/rerankers/edgefn.py +140 -0
  206. jarvis/jarvis_rag/rerankers/jina.py +79 -0
  207. jarvis/jarvis_rag/rerankers/local.py +89 -0
  208. jarvis/jarvis_rag/rerankers/registry.py +293 -0
  209. jarvis/jarvis_rag/retriever.py +58 -43
  210. jarvis/jarvis_sec/__init__.py +66 -141
  211. jarvis/jarvis_sec/agents.py +21 -17
  212. jarvis/jarvis_sec/analysis.py +80 -33
  213. jarvis/jarvis_sec/checkers/__init__.py +7 -13
  214. jarvis/jarvis_sec/checkers/c_checker.py +356 -164
  215. jarvis/jarvis_sec/checkers/rust_checker.py +47 -29
  216. jarvis/jarvis_sec/cli.py +43 -21
  217. jarvis/jarvis_sec/clustering.py +430 -272
  218. jarvis/jarvis_sec/file_manager.py +99 -55
  219. jarvis/jarvis_sec/parsers.py +9 -6
  220. jarvis/jarvis_sec/prompts.py +4 -3
  221. jarvis/jarvis_sec/report.py +44 -22
  222. jarvis/jarvis_sec/review.py +180 -107
  223. jarvis/jarvis_sec/status.py +50 -41
  224. jarvis/jarvis_sec/types.py +3 -0
  225. jarvis/jarvis_sec/utils.py +160 -83
  226. jarvis/jarvis_sec/verification.py +411 -181
  227. jarvis/jarvis_sec/workflow.py +132 -21
  228. jarvis/jarvis_smart_shell/main.py +28 -41
  229. jarvis/jarvis_stats/cli.py +14 -12
  230. jarvis/jarvis_stats/stats.py +28 -19
  231. jarvis/jarvis_stats/storage.py +14 -8
  232. jarvis/jarvis_stats/visualizer.py +12 -7
  233. jarvis/jarvis_tools/base.py +5 -2
  234. jarvis/jarvis_tools/clear_memory.py +13 -9
  235. jarvis/jarvis_tools/cli/main.py +23 -18
  236. jarvis/jarvis_tools/edit_file.py +572 -873
  237. jarvis/jarvis_tools/execute_script.py +10 -7
  238. jarvis/jarvis_tools/file_analyzer.py +7 -8
  239. jarvis/jarvis_tools/meta_agent.py +287 -0
  240. jarvis/jarvis_tools/methodology.py +5 -3
  241. jarvis/jarvis_tools/read_code.py +305 -1438
  242. jarvis/jarvis_tools/read_symbols.py +50 -17
  243. jarvis/jarvis_tools/read_webpage.py +19 -18
  244. jarvis/jarvis_tools/registry.py +435 -156
  245. jarvis/jarvis_tools/retrieve_memory.py +16 -11
  246. jarvis/jarvis_tools/save_memory.py +8 -6
  247. jarvis/jarvis_tools/search_web.py +31 -31
  248. jarvis/jarvis_tools/sub_agent.py +32 -28
  249. jarvis/jarvis_tools/sub_code_agent.py +44 -60
  250. jarvis/jarvis_tools/task_list_manager.py +1811 -0
  251. jarvis/jarvis_tools/virtual_tty.py +29 -19
  252. jarvis/jarvis_utils/__init__.py +4 -0
  253. jarvis/jarvis_utils/builtin_replace_map.py +2 -1
  254. jarvis/jarvis_utils/clipboard.py +9 -8
  255. jarvis/jarvis_utils/collections.py +331 -0
  256. jarvis/jarvis_utils/config.py +699 -194
  257. jarvis/jarvis_utils/dialogue_recorder.py +294 -0
  258. jarvis/jarvis_utils/embedding.py +6 -3
  259. jarvis/jarvis_utils/file_processors.py +7 -1
  260. jarvis/jarvis_utils/fzf.py +9 -3
  261. jarvis/jarvis_utils/git_utils.py +71 -42
  262. jarvis/jarvis_utils/globals.py +116 -32
  263. jarvis/jarvis_utils/http.py +6 -2
  264. jarvis/jarvis_utils/input.py +318 -83
  265. jarvis/jarvis_utils/jsonnet_compat.py +119 -104
  266. jarvis/jarvis_utils/methodology.py +37 -28
  267. jarvis/jarvis_utils/output.py +201 -44
  268. jarvis/jarvis_utils/utils.py +986 -628
  269. {jarvis_ai_assistant-0.7.8.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/METADATA +49 -33
  270. jarvis_ai_assistant-1.0.2.dist-info/RECORD +304 -0
  271. jarvis/jarvis_code_agent/code_analyzer/structured_code.py +0 -556
  272. jarvis/jarvis_tools/generate_new_tool.py +0 -205
  273. jarvis/jarvis_tools/lsp_client.py +0 -1552
  274. jarvis/jarvis_tools/rewrite_file.py +0 -105
  275. jarvis_ai_assistant-0.7.8.dist-info/RECORD +0 -218
  276. {jarvis_ai_assistant-0.7.8.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/WHEEL +0 -0
  277. {jarvis_ai_assistant-0.7.8.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/entry_points.txt +0 -0
  278. {jarvis_ai_assistant-0.7.8.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/licenses/LICENSE +0 -0
  279. {jarvis_ai_assistant-0.7.8.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 Optional, Any
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 CSymbolExtractor
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(['.c', '.h'], create_c_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 Optional, Any
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 CppSymbolExtractor
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(['.cpp', '.cc', '.cxx', '.hpp', '.hxx'], create_cpp_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 Optional, Any
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 GoSymbolExtractor
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('.go', create_go_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 Optional, Any
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 JavaSymbolExtractor
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 JavaSymbolExtractor:
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(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
- ))
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 JavaSymbolExtractor()
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('.java', create_java_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 Optional, Any, List
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(Symbol(
61
- name=node.text.decode('utf8'),
62
- kind=symbol_kind,
63
- file_path=file_path,
64
- line_start=node.start_point[0] + 1,
65
- line_end=node.end_point[0] + 1,
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(['.js', '.jsx'], create_javascript_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 Optional, Any
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 PythonSymbolExtractor
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(['.py', '.pyw'], create_python_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 Optional, Any
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 RustSymbolExtractor
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('.rs', create_rust_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 Optional, Any, List
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(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
- ))
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(['.ts', '.tsx'], create_typescript_extractor)
84
-
89
+ register_language_extractor([".ts", ".tsx"], create_typescript_extractor)