jarvis-ai-assistant 1.1.5__tar.gz → 1.1.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. {jarvis_ai_assistant-1.1.5/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-1.1.7}/PKG-INFO +1 -1
  2. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/pyproject.toml +1 -1
  3. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/setup.py +1 -1
  4. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/__init__.py +1 -1
  5. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/__init__.py +16 -3
  6. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/builtin_input_handler.py +9 -13
  7. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/jvsd_cli.py +2 -1
  8. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/prompt_manager.py +11 -8
  9. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/prompts.py +9 -9
  10. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/rules_manager.py +132 -2
  11. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/run_loop.py +2 -55
  12. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_agent.py +6 -226
  13. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_agent_prompts.py +1 -1
  14. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_data/config_schema.json +1 -1
  15. jarvis_ai_assistant-1.1.7/src/jarvis/jarvis_data/rule +7 -0
  16. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_jck/cli.py +96 -18
  17. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_jck/config.py +8 -0
  18. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_platform/base.py +139 -29
  19. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/query_rewriter.py +1 -1
  20. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_tools/edit_file.py +0 -51
  21. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_tools/meta_agent.py +4 -4
  22. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_tools/read_code.py +6 -0
  23. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_tools/read_webpage.py +1 -1
  24. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_tools/registry.py +55 -3
  25. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_utils/config.py +2 -2
  26. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_utils/template_utils.py +1 -1
  27. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_utils/utils.py +40 -9
  28. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7/src/jarvis_ai_assistant.egg-info}/PKG-INFO +1 -1
  29. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +1 -0
  30. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/LICENSE +0 -0
  31. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/MANIFEST.in +0 -0
  32. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/README.md +0 -0
  33. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/setup.cfg +0 -0
  34. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/agent_manager.py +0 -0
  35. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/builtin_rules.py +0 -0
  36. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/config_editor.py +0 -0
  37. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/event_bus.py +0 -0
  38. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/events.py +0 -0
  39. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/file_context_handler.py +0 -0
  40. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/file_methodology_manager.py +0 -0
  41. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/jarvis.py +0 -0
  42. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/language_extractors/__init__.py +0 -0
  43. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/language_extractors/c_extractor.py +0 -0
  44. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/language_extractors/cpp_extractor.py +0 -0
  45. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/language_extractors/go_extractor.py +0 -0
  46. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/language_extractors/java_extractor.py +0 -0
  47. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/language_extractors/javascript_extractor.py +0 -0
  48. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/language_extractors/python_extractor.py +0 -0
  49. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/language_extractors/rust_extractor.py +0 -0
  50. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/language_extractors/typescript_extractor.py +0 -0
  51. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/language_support_info.py +0 -0
  52. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/main.py +0 -0
  53. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/memory_manager.py +0 -0
  54. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/methodology_share_manager.py +0 -0
  55. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/output_handler.py +0 -0
  56. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/prompt_builder.py +0 -0
  57. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/protocols.py +0 -0
  58. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/session_manager.py +0 -0
  59. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/share_manager.py +0 -0
  60. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/shell_input_handler.py +0 -0
  61. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/stdio_redirect.py +0 -0
  62. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/task_analyzer.py +0 -0
  63. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/task_list.py +0 -0
  64. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/task_manager.py +0 -0
  65. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/tool_executor.py +0 -0
  66. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/tool_share_manager.py +0 -0
  67. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/user_interaction.py +0 -0
  68. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/utils.py +0 -0
  69. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/web_bridge.py +0 -0
  70. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_agent/web_server.py +0 -0
  71. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/__init__.py +0 -0
  72. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/cli.py +0 -0
  73. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/collector.py +0 -0
  74. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/constants.py +0 -0
  75. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/library_replacer.py +0 -0
  76. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/library_replacer_checkpoint.py +0 -0
  77. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/library_replacer_llm.py +0 -0
  78. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/library_replacer_loader.py +0 -0
  79. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/library_replacer_output.py +0 -0
  80. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/library_replacer_prompts.py +0 -0
  81. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/library_replacer_utils.py +0 -0
  82. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/llm_module_agent.py +0 -0
  83. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/llm_module_agent_apply.py +0 -0
  84. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/llm_module_agent_executor.py +0 -0
  85. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/llm_module_agent_loader.py +0 -0
  86. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/llm_module_agent_prompts.py +0 -0
  87. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/llm_module_agent_types.py +0 -0
  88. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/llm_module_agent_utils.py +0 -0
  89. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/llm_module_agent_validator.py +0 -0
  90. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/loaders.py +0 -0
  91. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/models.py +0 -0
  92. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/optimizer.py +0 -0
  93. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/optimizer_build_fix.py +0 -0
  94. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/optimizer_clippy.py +0 -0
  95. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/optimizer_config.py +0 -0
  96. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/optimizer_docs.py +0 -0
  97. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/optimizer_options.py +0 -0
  98. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/optimizer_progress.py +0 -0
  99. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/optimizer_report.py +0 -0
  100. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/optimizer_unsafe.py +0 -0
  101. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/optimizer_utils.py +0 -0
  102. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/optimizer_visibility.py +0 -0
  103. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/scanner.py +0 -0
  104. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/transpiler.py +0 -0
  105. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/transpiler_agents.py +0 -0
  106. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/transpiler_build.py +0 -0
  107. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/transpiler_codegen.py +0 -0
  108. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/transpiler_compile.py +0 -0
  109. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/transpiler_config.py +0 -0
  110. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/transpiler_context.py +0 -0
  111. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/transpiler_executor.py +0 -0
  112. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/transpiler_generation.py +0 -0
  113. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/transpiler_git.py +0 -0
  114. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/transpiler_mod_utils.py +0 -0
  115. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/transpiler_modules.py +0 -0
  116. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/transpiler_planning.py +0 -0
  117. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/transpiler_review.py +0 -0
  118. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/transpiler_symbols.py +0 -0
  119. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_c2rust/utils.py +0 -0
  120. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
  121. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/after_change.py +0 -0
  122. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/build_validation_config.py +0 -0
  123. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_agent_build.py +0 -0
  124. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_agent_diff.py +0 -0
  125. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_agent_git.py +0 -0
  126. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_agent_impact.py +0 -0
  127. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_agent_lint.py +0 -0
  128. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_agent_postprocess.py +0 -0
  129. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/__init__.py +0 -0
  130. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/base_language.py +0 -0
  131. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/__init__.py +0 -0
  132. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/base.py +0 -0
  133. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/cmake.py +0 -0
  134. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/custom.py +0 -0
  135. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/detector.py +0 -0
  136. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/fallback.py +0 -0
  137. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/go.py +0 -0
  138. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/java_gradle.py +0 -0
  139. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/java_maven.py +0 -0
  140. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/makefile.py +0 -0
  141. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/nodejs.py +0 -0
  142. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/python.py +0 -0
  143. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/rust.py +0 -0
  144. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/validator.py +0 -0
  145. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/build_validator.py +0 -0
  146. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/context_manager.py +0 -0
  147. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/context_recommender.py +0 -0
  148. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/dependency_analyzer.py +0 -0
  149. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/file_ignore.py +0 -0
  150. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/impact_analyzer.py +0 -0
  151. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/language_registry.py +0 -0
  152. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/language_support.py +0 -0
  153. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/languages/__init__.py +0 -0
  154. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/languages/c_cpp_language.py +0 -0
  155. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/languages/go_language.py +0 -0
  156. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/languages/java_language.py +0 -0
  157. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/languages/javascript_language.py +0 -0
  158. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/languages/python_language.py +0 -0
  159. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/languages/rust_language.py +0 -0
  160. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/languages/typescript_language.py +0 -0
  161. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/llm_context_recommender.py +0 -0
  162. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/symbol_extractor.py +0 -0
  163. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/code_analyzer/tree_sitter_extractor.py +0 -0
  164. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/diff_visualizer.py +0 -0
  165. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/jcad_cli.py +0 -0
  166. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/lint.py +0 -0
  167. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/rule_share_manager.py +0 -0
  168. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/utils.py +0 -0
  169. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_agent/worktree_manager.py +0 -0
  170. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +0 -0
  171. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +0 -0
  172. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +0 -0
  173. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +0 -0
  174. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_analysis/checklists/devops.py +0 -0
  175. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_analysis/checklists/docs.py +0 -0
  176. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_analysis/checklists/go.py +0 -0
  177. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +0 -0
  178. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_analysis/checklists/java.py +0 -0
  179. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +0 -0
  180. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +0 -0
  181. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_analysis/checklists/loader.py +0 -0
  182. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_analysis/checklists/php.py +0 -0
  183. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_analysis/checklists/python.py +0 -0
  184. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +0 -0
  185. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_analysis/checklists/rust.py +0 -0
  186. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_analysis/checklists/shell.py +0 -0
  187. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_analysis/checklists/sql.py +0 -0
  188. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_analysis/checklists/swift.py +0 -0
  189. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_analysis/checklists/web.py +0 -0
  190. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_code_analysis/code_review.py +0 -0
  191. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_config/__init__.py +0 -0
  192. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_config/cli.py +0 -0
  193. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_config/schema_parser.py +0 -0
  194. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_config/web_app.py +0 -0
  195. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  196. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_git_squash/__init__.py +0 -0
  197. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_git_squash/main.py +0 -0
  198. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_git_utils/git_commiter.py +0 -0
  199. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_jck/__init__.py +0 -0
  200. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_jck/core.py +0 -0
  201. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_mcp/__init__.py +0 -0
  202. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_mcp/sse_mcp_client.py +0 -0
  203. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_mcp/stdio_mcp_client.py +0 -0
  204. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_mcp/streamable_mcp_client.py +0 -0
  205. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_memory_organizer/__init__.py +0 -0
  206. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_memory_organizer/memory_organizer.py +0 -0
  207. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_methodology/main.py +0 -0
  208. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_multi_agent/__init__.py +0 -0
  209. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_multi_agent/main.py +0 -0
  210. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_platform/__init__.py +0 -0
  211. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_platform/claude.py +0 -0
  212. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_platform/kimi.py +0 -0
  213. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_platform/openai.py +0 -0
  214. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_platform/registry.py +0 -0
  215. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_platform/tongyi.py +0 -0
  216. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_platform/yuanbao.py +0 -0
  217. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_platform_manager/__init__.py +0 -0
  218. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_platform_manager/main.py +0 -0
  219. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_platform_manager/service.py +0 -0
  220. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/README_CONFIG.md +0 -0
  221. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/README_DYNAMIC_LOADING.md +0 -0
  222. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/README_ONLINE_MODELS.md +0 -0
  223. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/__init__.py +0 -0
  224. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/cache.py +0 -0
  225. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/cli.py +0 -0
  226. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/embedding_interface.py +0 -0
  227. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/embedding_manager.py +0 -0
  228. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/embeddings/__init__.py +0 -0
  229. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/embeddings/base.py +0 -0
  230. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/embeddings/cohere.py +0 -0
  231. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/embeddings/edgefn.py +0 -0
  232. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/embeddings/local.py +0 -0
  233. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/embeddings/openai.py +0 -0
  234. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/embeddings/registry.py +0 -0
  235. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/llm_interface.py +0 -0
  236. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/rag_pipeline.py +0 -0
  237. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/reranker.py +0 -0
  238. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/reranker_interface.py +0 -0
  239. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/rerankers/__init__.py +0 -0
  240. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/rerankers/base.py +0 -0
  241. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/rerankers/cohere.py +0 -0
  242. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/rerankers/edgefn.py +0 -0
  243. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/rerankers/jina.py +0 -0
  244. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/rerankers/local.py +0 -0
  245. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/rerankers/registry.py +0 -0
  246. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_rag/retriever.py +0 -0
  247. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_sec/__init__.py +0 -0
  248. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_sec/agents.py +0 -0
  249. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_sec/analysis.py +0 -0
  250. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_sec/checkers/__init__.py +0 -0
  251. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_sec/checkers/c_checker.py +0 -0
  252. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_sec/checkers/rust_checker.py +0 -0
  253. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_sec/cli.py +0 -0
  254. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_sec/clustering.py +0 -0
  255. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_sec/file_manager.py +0 -0
  256. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_sec/parsers.py +0 -0
  257. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_sec/prompts.py +0 -0
  258. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_sec/report.py +0 -0
  259. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_sec/review.py +0 -0
  260. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_sec/status.py +0 -0
  261. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_sec/types.py +0 -0
  262. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_sec/utils.py +0 -0
  263. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_sec/verification.py +0 -0
  264. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_sec/workflow.py +0 -0
  265. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_smart_shell/__init__.py +0 -0
  266. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_smart_shell/main.py +0 -0
  267. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_stats/__init__.py +0 -0
  268. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_stats/cli.py +0 -0
  269. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_stats/stats.py +0 -0
  270. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_stats/storage.py +0 -0
  271. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_stats/visualizer.py +0 -0
  272. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_tools/__init__.py +0 -0
  273. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_tools/base.py +0 -0
  274. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_tools/clear_memory.py +0 -0
  275. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_tools/cli/__init__.py +0 -0
  276. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_tools/cli/main.py +0 -0
  277. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_tools/execute_script.py +0 -0
  278. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_tools/load_rule.py +0 -0
  279. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_tools/methodology.py +0 -0
  280. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_tools/read_symbols.py +0 -0
  281. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_tools/retrieve_memory.py +0 -0
  282. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_tools/save_memory.py +0 -0
  283. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_tools/search_web.py +0 -0
  284. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_tools/sub_agent.py +0 -0
  285. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_tools/sub_code_agent.py +0 -0
  286. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_tools/task_list_manager.py +0 -0
  287. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_tools/virtual_tty.py +0 -0
  288. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_utils/__init__.py +0 -0
  289. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_utils/builtin_replace_map.py +0 -0
  290. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_utils/clipboard.py +0 -0
  291. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_utils/collections.py +0 -0
  292. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_utils/dialogue_recorder.py +0 -0
  293. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_utils/embedding.py +0 -0
  294. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_utils/file_processors.py +0 -0
  295. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_utils/fzf.py +0 -0
  296. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_utils/git_utils.py +0 -0
  297. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_utils/globals.py +0 -0
  298. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_utils/http.py +0 -0
  299. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_utils/input.py +0 -0
  300. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_utils/jsonnet_compat.py +0 -0
  301. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_utils/methodology.py +0 -0
  302. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_utils/output.py +0 -0
  303. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_utils/quick_config.py +0 -0
  304. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_utils/tag.py +0 -0
  305. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis/jarvis_utils/tmux_wrapper.py +0 -0
  306. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
  307. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis_ai_assistant.egg-info/entry_points.txt +0 -0
  308. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis_ai_assistant.egg-info/requires.txt +0 -0
  309. {jarvis_ai_assistant-1.1.5 → jarvis_ai_assistant-1.1.7}/src/jarvis_ai_assistant.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jarvis-ai-assistant
3
- Version: 1.1.5
3
+ Version: 1.1.7
4
4
  Summary: Jarvis: An AI assistant that uses tools to interact with the system
5
5
  Home-page: https://github.com/skyfireitdiy/Jarvis.git
6
6
  Author: skyfire
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "jarvis-ai-assistant"
7
- version = "1.1.5"
7
+ version = "1.1.7"
8
8
  description = "Jarvis: An AI assistant that uses tools to interact with the system"
9
9
  readme = "README.md"
10
10
  authors = [{ name = "skyfire", email = "skyfireitdiy@hotmail.com" }]
@@ -3,7 +3,7 @@ from setuptools import setup, find_packages
3
3
 
4
4
  setup(
5
5
  name="jarvis-ai-assistant",
6
- version="1.1.5",
6
+ version="1.1.7",
7
7
  author="skyfire",
8
8
  author_email="skyfireitdiy@hotmail.com",
9
9
  description="An AI assistant that uses various tools to interact with the system",
@@ -1,4 +1,4 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  """Jarvis AI Assistant"""
3
3
 
4
- __version__ = "1.1.5"
4
+ __version__ = "1.1.7"
@@ -221,10 +221,10 @@ origin_agent_system_prompt = f"""
221
221
  使用 `load_rule` 加载相关规则和最佳实践,理解规则约束和要求。仅在需要专业知识指导时执行。
222
222
 
223
223
  #### COLLECT(收集信息)
224
- 只读收集必要信息:使用合适的工具(如搜索工具、查询工具等)精准定位和获取相关信息,禁止臆测。对于代码任务,使用搜索工具(rg、fd)定位文件(必须带目录/后缀过滤),读取目标文件及直接依赖。
224
+ 只读收集必要信息:必要时可使用 `retrieve_memory` 工具检索相关记忆获取历史信息;使用合适的工具(如搜索工具、查询工具等)精准定位和获取相关信息,禁止臆测。对于代码任务,使用搜索工具(rg、fd)定位文件(必须带目录/后缀过滤),读取目标文件及直接依赖。
225
225
 
226
226
  #### HYPOTHESIZE(提出方案)
227
- 基于收集的信息提出多个可行方案,对比各方案的优劣、风险、成本,询问用户偏好。用户答复后,根据任务复杂程度决定是否使用 `task_list_manager` 创建任务列表,并制定详细执行计划。**必须明确每个方案的验收标准和清晰的执行步骤**,确保可衡量、可验证、可执行。
227
+ 基于收集的信息提出多个可行方案,对比各方案的优劣、风险、成本,询问用户偏好。用户答复后,根据任务复杂程度决定是否使用 `task_list_manager` 创建任务列表,并制定详细执行计划。**必须明确每个方案的验收标准和清晰的执行步骤**,确保可衡量、可验证、可执行。**重要:此阶段完成后,必须经过用户确认,才能进入到EXECUTE阶段**。
228
228
 
229
229
  #### EXECUTE(执行操作)
230
230
  按计划精准实施:先读后写(read_code 确认位置 → edit_file 修改),最小改动,单次回复单工具调用,每次修改后立即验证。
@@ -655,7 +655,10 @@ class Agent:
655
655
  # 初始化规则管理器(如果子类已经创建,则不覆盖)
656
656
  if not hasattr(self, "rules_manager"):
657
657
  self.rules_manager = RulesManager(root_dir)
658
- _, self.loaded_rule_names = self.rules_manager.load_all_rules(rule_names)
658
+ # 无条件加载规则内容(确保 loaded_rules 和 loaded_rule_names 被初始化)
659
+ self.loaded_rules, self.loaded_rule_names = self.rules_manager.load_all_rules(
660
+ rule_names
661
+ )
659
662
 
660
663
  def _setup_tools_and_prompt(self) -> None:
661
664
  """设置工具和系统提示词"""
@@ -684,6 +687,9 @@ class Agent:
684
687
  self.model.set_model_group(model_group)
685
688
  self.model.set_suppress_output(False)
686
689
 
690
+ # 设置Agent引用,使Platform能够回调Agent方法(如自动总结)
691
+ self.model.agent = self
692
+
687
693
  # 设置全局模型组,供工具和其他组件使用
688
694
  set_global_model_group(model_group)
689
695
 
@@ -1837,6 +1843,13 @@ class Agent:
1837
1843
 
1838
1844
  # 将非交互模式说明添加到用户输入中
1839
1845
  enhanced_input = user_input + non_interactive_note
1846
+
1847
+ # 将已加载的规则内容添加到用户输入的最前面
1848
+ if hasattr(self, "loaded_rules") and self.loaded_rules:
1849
+ enhanced_input = (
1850
+ f"<rules>\n{self.loaded_rules}\n</rules>\n\n{enhanced_input}"
1851
+ )
1852
+
1840
1853
  self.session.prompt = enhanced_input
1841
1854
 
1842
1855
  # 关键流程:直接调用 memory_manager 重置任务状态
@@ -184,19 +184,15 @@ def builtin_input_handler(user_input: str, agent_: Any) -> Tuple[str, bool]:
184
184
  )
185
185
  elif tag.startswith("rule:"):
186
186
  # 处理 rule:xxx 格式的规则标记
187
- rule_name = tag[5:] # 去掉 "rule:" 前缀
188
- rule_content = _get_rule_content(rule_name)
189
- if rule_content:
190
- # 记录运行时加载的规则到CodeAgent
191
- from jarvis.jarvis_code_agent.code_agent import CodeAgent
192
-
193
- if agent is not None and isinstance(agent, CodeAgent):
194
- agent.add_runtime_rule(rule_name)
195
-
196
- separator = "\n" + "=" * 50 + "\n"
197
- modified_input = modified_input.replace(
198
- f"'<{tag}>'", f"<rule>\n{rule_content}\n</rule>{separator}"
199
- )
187
+ if tag not in processed_tag:
188
+ rule_name = tag[5:] # 去掉 "rule:" 前缀
189
+ rule_content = _get_rule_content(rule_name)
190
+ processed_tag.add(tag)
191
+ if rule_content:
192
+ separator = "\n" + "=" * 50 + "\n"
193
+ modified_input = modified_input.replace(
194
+ f"'<{tag}>'", f"<rule>\n{rule_content}\n</rule>{separator}"
195
+ )
200
196
 
201
197
  # 设置附加提示词并返回处理后的内容
202
198
  agent.set_addon_prompt(add_on_prompt)
@@ -93,7 +93,8 @@ def run_jvs_dispatch(
93
93
 
94
94
  # 构造命令:cd 到工作目录,执行 jvs
95
95
  # 注意:不自动删除任务文件,避免被清理机制误删
96
- command = f"cd {quoted_cwd} && jvs -n -d --task-file '{quoted_task_file}'"
96
+ # 注意:不使用 -d 参数,因为 jvsd 已经通过 dispatch_command_to_panel 创建了 panel
97
+ command = f"cd {quoted_cwd} && jvs -n --task-file '{quoted_task_file}'"
97
98
 
98
99
  try:
99
100
  # 使用智能调度函数创建 tmux panel
@@ -36,15 +36,17 @@ class PromptManager:
36
36
  """
37
37
  构建系统提示词,复用现有的工具使用提示生成逻辑,保持行为一致。
38
38
  """
39
- from jarvis.jarvis_code_agent.code_agent import CodeAgent
40
-
41
- rules_prompt = ""
42
- if isinstance(agent_, CodeAgent):
43
- code_agent: CodeAgent = agent_
44
- rules_prompt = code_agent.get_rules_prompt()
45
-
46
39
  action_prompt = self.agent.get_tool_usage_prompt()
47
40
 
41
+ # 获取已加载的规则内容
42
+ loaded_rules = ""
43
+ if hasattr(agent_, "loaded_rules") and agent_.loaded_rules:
44
+ loaded_rules = f"""\n
45
+ <loaded_rules>
46
+ # 已加载的规则
47
+ \n{agent_.loaded_rules}
48
+ </loaded_rules>"""
49
+
48
50
  # 检查 load_rule 工具是否可用
49
51
  load_rule_guide = ""
50
52
  tool_registry = self.agent.get_tool_registry()
@@ -149,9 +151,10 @@ class PromptManager:
149
151
 
150
152
  {load_rule_guide}
151
153
 
154
+ {loaded_rules}
155
+
152
156
  {system_tools_info}
153
157
 
154
- {rules_prompt}
155
158
  """
156
159
 
157
160
  # ----------------------------
@@ -87,7 +87,7 @@ DEFAULT_SUMMARY_PROMPT = """<report>
87
87
  - **代码位置**:核心文件、配置位置、关键实现(提供精确的文件路径和范围;如无法精确定位可标注"大致位置")
88
88
  - **调试信息**:错误信息、性能数据、测试结果(基于实际运行结果;如无法重现可标注"未复现")
89
89
 
90
- #### 6. 用户偏好与约束(精确记录)
90
+ #### 6. 我的偏好与约束(精确记录)
91
91
  - **质量要求**:代码规范、测试覆盖率、文档标准
92
92
  - **性能约束**:响应时间、并发量、资源限制
93
93
  - **兼容性要求**:系统版本、浏览器支持、设备适配
@@ -102,7 +102,7 @@ DEFAULT_SUMMARY_PROMPT = """<report>
102
102
 
103
103
  <format>
104
104
  1. 语言风格:简洁、客观、专业,使用编程领域规范表述;
105
- 2. 结构组织:按"核心目标→已确认事实→决策与共识→技术细节→任务进展→待办事项→用户约束"的逻辑组织;
105
+ 2. 结构组织:按"核心目标→已确认事实→决策与共识→技术细节→任务进展→待办事项→我的约束"的逻辑组织;
106
106
  3. 呈现形式:分点列出,关键技术内容用`代码块`/加粗标注,待办事项用"【优先级】+ 内容"明确;
107
107
  4. **任务状态呈现要求**:
108
108
  - 必须严格区分"已完成"、"进行中"、"部分完成"、"待完成"四种状态
@@ -142,7 +142,7 @@ SUMMARY_REQUEST_PROMPT = """<summary_request>
142
142
  - **验证标准**:必须同时满足以下条件才能标记为"已完成":
143
143
  1. 有明确的执行记录(如代码已提交、文件已创建、功能已测试)
144
144
  2. 有验证证据(如测试通过、代码审查通过、功能运行正常、错误已修复)
145
- 3. 达到验收标准(如满足性能指标、通过所有测试用例、满足用户需求)
145
+ 3. 达到验收标准(如满足性能指标、通过所有测试用例、满足我的需求)
146
146
  4. **代码开发任务额外要求(必须全部满足)**:
147
147
  - ✅ **编译/构建必须通过**:代码必须能够成功编译/构建,无编译错误、无语法错误、无链接错误、无类型错误
148
148
  - ✅ **功能必须验证**:功能必须经过实际运行验证,不能仅凭代码存在就认为完成
@@ -281,7 +281,7 @@ SUMMARY_REQUEST_PROMPT = """<summary_request>
281
281
  7. **数据模型**:基于实际数据库或ORM验证的数据库表结构、字段定义、关系映射
282
282
  8. **代码变更历史**:基于实际git log验证的diff摘要、经过验证的关键变更点、可验证的回滚点(**如果系统提供了git diff,必须整合到经过验证的总结中**)
283
283
 
284
- #### 7. 用户偏好与约束(精确记录)
284
+ #### 7. 我的偏好与约束(精确记录)
285
285
  - **质量要求**:代码规范、测试覆盖率、文档标准
286
286
  - **性能约束**:响应时间、并发量、资源限制
287
287
  - **兼容性要求**:系统版本、浏览器支持、设备适配
@@ -290,16 +290,16 @@ SUMMARY_REQUEST_PROMPT = """<summary_request>
290
290
 
291
291
  #### 8. 可省略的冗余内容(无需保留)
292
292
  - 寒暄与无关闲聊(如"您好""谢谢""今天天气不错");
293
- - 重复表述(用户多次强调的同一需求,仅保留1次核心表述);
293
+ - 重复表述(我多次强调的同一需求,仅保留1次核心表述);
294
294
  - **注意**:临时试错/未落地的想法如果包含重要信息(如"尝试了XX方案但失败,原因是YY"),必须保留失败原因,不能省略;
295
- - 与任务无关的细节(如"用户提及的其他项目经验""无关的技术科普")。
295
+ - 与任务无关的细节(如"我提及的其他项目经验""无关的技术科普")。
296
296
  - **代码开发场景特别注意**:即使某个方案被放弃,如果放弃原因对后续决策有影响,必须保留。
297
297
 
298
298
  </guidelines>
299
299
 
300
300
  <format>
301
301
  1. 语言风格:简洁、客观、专业,使用编程领域规范表述(如"非阻塞IO"而非"不等待的输入输出");
302
- 2. 结构组织:按"核心目标→已确认事实→决策与共识→技术细节→代码变更详情→任务进展→待办事项→用户约束"的逻辑组织(替代"时间顺序",更贴合后续对话需求);
302
+ 2. 结构组织:按"核心目标→已确认事实→决策与共识→技术细节→代码变更详情→任务进展→待办事项→我的约束"的逻辑组织(替代"时间顺序",更贴合后续对话需求);
303
303
  3. 呈现形式:分点列出,关键技术内容用`代码块`/加粗标注,待办事项用"【优先级】+ 内容"明确(如"【高】补充跨域配置");
304
304
  4. **任务状态呈现要求(关键)**:
305
305
  - 必须严格区分"已完成"、"进行中"、"部分完成"、"待完成"四种状态
@@ -423,7 +423,7 @@ def get_task_analysis_prompt(
423
423
  可用的工具/方法论:[列出工具名称或方法论名称]
424
424
  使用方法:[简要说明如何使用]
425
425
  2. 工具创建(如果需要创建新工具):
426
- 注意:如果环境支持,请使用 meta_agent 工具创建/改进新工具;如果不支持,请提供完整的工具代码和说明,用户需要手动创建工具文件。
426
+ 注意:如果环境支持,请使用 meta_agent 工具创建/改进新工具;如果不支持,请提供完整的工具代码和说明,我需要手动创建工具文件。
427
427
  3. 方法论创建(如果需要创建新方法论):
428
428
  判断标准:
429
429
  - 如果方法论特定于当前项目(如项目特定的技术方案、开发流程、规范等),使用 scope="project"
@@ -469,7 +469,7 @@ def get_task_analysis_prompt(
469
469
  <evaluation_criteria>
470
470
  现有资源评估: 检查现有工具/方法论/组合使用是否可解决问题
471
471
  工具评估: 通用性、自动化、可靠性、简单性
472
- 方法论评估: 聚焦通用可重复流程,纳入用户反馈,面向未来复用
472
+ 方法论评估: 聚焦通用可重复流程,纳入我的反馈,面向未来复用
473
473
  </evaluation_criteria>
474
474
  <tool_requirements>
475
475
  工具代码要求:
@@ -130,6 +130,124 @@ class RulesManager:
130
130
  pass
131
131
  return None
132
132
 
133
+ def _get_builtin_rules_index(self) -> Optional[str]:
134
+ """读取 builtin_rules.md 索引文件的完整内容
135
+
136
+ 返回:
137
+ str: builtin_rules.md 的完整内容,如果未找到则返回 None
138
+ """
139
+ try:
140
+ from jarvis.jarvis_utils.template_utils import _get_jarvis_src_dir
141
+
142
+ # 获取索引文件路径
143
+ jarvis_src_dir = _get_jarvis_src_dir()
144
+ index_file_path = os.path.join(
145
+ jarvis_src_dir, "builtin", "rules", "builtin_rules.md"
146
+ )
147
+
148
+ # 检查索引文件是否存在
149
+ if not os.path.exists(index_file_path) or not os.path.isfile(
150
+ index_file_path
151
+ ):
152
+ return None
153
+
154
+ # 读取索引文件内容
155
+ with open(index_file_path, "r", encoding="utf-8", errors="replace") as f:
156
+ index_content = f.read()
157
+
158
+ # 使用jinja2渲染规则模板
159
+ if index_content:
160
+ index_content = render_rule_template(
161
+ index_content, os.path.dirname(index_file_path)
162
+ )
163
+
164
+ return index_content if index_content else None
165
+
166
+ except Exception as e:
167
+ # 读取失败时忽略,不影响主流程
168
+ PrettyOutput.auto_print(f"⚠️ 读取builtin_rules.md失败: {e}")
169
+ return None
170
+
171
+ def _get_rule_from_builtin_index(self, rule_name: str) -> Optional[str]:
172
+ """从 builtin_rules.md 索引文件中查找并加载指定名称的规则
173
+
174
+ 该索引文件记录了内置规则的映射关系,格式为:
175
+ - [规则名称]({{ template_var }}/path/to/rule.md)
176
+
177
+ 参数:
178
+ rule_name: 规则名称
179
+
180
+ 返回:
181
+ str: 规则内容,如果未找到则返回 None
182
+ """
183
+ try:
184
+ from jarvis.jarvis_utils.template_utils import _get_jarvis_src_dir
185
+
186
+ # 获取索引文件路径
187
+ jarvis_src_dir = _get_jarvis_src_dir()
188
+ index_file_path = os.path.join(
189
+ jarvis_src_dir, "builtin", "rules", "builtin_rules.md"
190
+ )
191
+
192
+ # 检查索引文件是否存在
193
+ if not os.path.exists(index_file_path) or not os.path.isfile(
194
+ index_file_path
195
+ ):
196
+ return None
197
+
198
+ # 读取索引文件内容
199
+ with open(index_file_path, "r", encoding="utf-8", errors="replace") as f:
200
+ index_content = f.read()
201
+
202
+ # 解析索引文件,查找匹配的规则
203
+ # 格式: - [规则名称](路径)
204
+ import re
205
+
206
+ pattern = rf"-\s*\[{re.escape(rule_name)}\]\(([^)]+)\)"
207
+ match = re.search(pattern, index_content)
208
+
209
+ if not match:
210
+ return None
211
+
212
+ # 提取规则文件路径
213
+ rule_file_template = match.group(1).strip()
214
+
215
+ # 渲染模板变量(支持 {{ jarvis_src_dir }} 和 {{ rule_file_dir }})
216
+ context = {
217
+ "jarvis_src_dir": jarvis_src_dir,
218
+ "rule_file_dir": os.path.dirname(index_file_path),
219
+ }
220
+
221
+ try:
222
+ from jinja2 import Template
223
+
224
+ template = Template(rule_file_template)
225
+ rule_file_path = template.render(**context)
226
+ except Exception:
227
+ # 模板渲染失败,直接使用原始路径
228
+ rule_file_path = rule_file_template
229
+
230
+ # 检查规则文件是否存在
231
+ if not os.path.exists(rule_file_path) or not os.path.isfile(rule_file_path):
232
+ return None
233
+
234
+ # 读取规则文件内容
235
+ with open(rule_file_path, "r", encoding="utf-8", errors="replace") as f:
236
+ rule_content = f.read().strip()
237
+
238
+ # 使用jinja2渲染规则模板
239
+ if rule_content:
240
+ rule_content = render_rule_template(
241
+ rule_content, os.path.dirname(rule_file_path)
242
+ )
243
+
244
+ return rule_content if rule_content else None
245
+
246
+ except Exception as e:
247
+ # 读取失败时忽略,不影响主流程
248
+ PrettyOutput.auto_print(f"⚠️ 从索引文件加载规则失败: {e}")
249
+ return None
250
+
133
251
  def _get_all_rules_dirs(self) -> List[str]:
134
252
  """获取所有规则目录(包括项目目录和配置的目录)
135
253
 
@@ -191,7 +309,8 @@ class RulesManager:
191
309
  3. 项目 rules.yaml 文件
192
310
  4. 配置的规则目录中的文件(按配置顺序,不包括中心库)
193
311
  5. 全局 rules.yaml 文件
194
- 6. 内置规则(最低优先级,作为后备)
312
+ 6. builtin_rules.md 索引文件中的规则
313
+ 7. 内置规则(最低优先级,作为后备)
195
314
 
196
315
  参数:
197
316
  rule_name: 规则名称
@@ -232,7 +351,12 @@ class RulesManager:
232
351
  # 单个文件读取失败不影响其他文件
233
352
  continue
234
353
 
235
- # 优先级 3: 从内置规则中查找(最低优先级,作为后备)
354
+ # 优先级 3: 从 builtin_rules.md 索引文件中查找
355
+ indexed_rule = self._get_rule_from_builtin_index(rule_name)
356
+ if indexed_rule:
357
+ return indexed_rule
358
+
359
+ # 优先级 4: 从内置规则中查找(最低优先级,作为后备)
236
360
  builtin_rule = get_builtin_rule(rule_name)
237
361
  if builtin_rule:
238
362
  return builtin_rule
@@ -312,6 +436,12 @@ class RulesManager:
312
436
  combined_parts.append(project_rules)
313
437
  loaded_rule_names.add("project_rule")
314
438
 
439
+ # 加载 builtin_rules.md 内置规则索引
440
+ builtin_rules_index = self._get_builtin_rules_index()
441
+ if builtin_rules_index:
442
+ combined_parts.append(builtin_rules_index)
443
+ loaded_rule_names.add("builtin_rules_index")
444
+
315
445
  # 如果指定了 rule_names,从 rules.yaml 文件中读取并添加多个规则
316
446
  if rule_names:
317
447
  rule_list = [name.strip() for name in rule_names.split(",") if name.strip()]
@@ -35,10 +35,10 @@ class AgentRunLoop:
35
35
  def __init__(self, agent: "Agent") -> None:
36
36
  self.agent = agent
37
37
  self.tool_reminder_rounds = int(os.environ.get("tool_reminder_rounds", 20))
38
- # 基于剩余token数量的自动总结阈值:当剩余token低于输入窗口的20%时触发
38
+ # 基于剩余token数量的自动总结阈值:当剩余token低于输入窗口的25%时触发
39
39
  # 使用模型的平台特定配置,确保阈值计算与运行时检查使用相同的配置
40
40
  max_input_tokens = self.agent.model._get_platform_max_input_token_count()
41
- self.summary_remaining_token_threshold = int(max_input_tokens * 0.2)
41
+ self.summary_remaining_token_threshold = int(max_input_tokens * 0.25)
42
42
  self.conversation_turn_threshold = get_conversation_turn_threshold()
43
43
 
44
44
  # Git diff相关属性
@@ -133,59 +133,6 @@ class AgentRunLoop:
133
133
  self.agent.get_tool_usage_prompt(),
134
134
  ]
135
135
  )
136
- # 基于剩余token数量或对话轮次的自动总结判断
137
- remaining_tokens = self.agent.model.get_remaining_token_count()
138
- token_limit_triggered = (
139
- remaining_tokens <= self.summary_remaining_token_threshold
140
- )
141
- turn_limit_triggered = current_round > self.conversation_turn_threshold
142
- should_summarize = token_limit_triggered or turn_limit_triggered
143
-
144
- # 如果是token限制触发,打印当前token数量
145
- if token_limit_triggered:
146
- # 使用平台内部的实际token限制,而不是全局配置(考虑cheap/smart/normal等不同模型类型)
147
- max_input_tokens = (
148
- self.agent.model._get_platform_max_input_token_count()
149
- )
150
- PrettyOutput.auto_print(
151
- f"🔍 Token限制触发自动总结,当前剩余token数量: {remaining_tokens}/{max_input_tokens} (剩余 {remaining_tokens / max_input_tokens * 100:.1f}%)"
152
- )
153
-
154
- if should_summarize:
155
- # 在总结前获取git diff(仅对CodeAgent类型)
156
- try:
157
- if (
158
- hasattr(self.agent, "start_commit")
159
- and self.agent.start_commit
160
- ):
161
- self._git_diff = self.get_git_diff()
162
- else:
163
- self._git_diff = None
164
- except KeyboardInterrupt:
165
- raise
166
- except Exception as e:
167
- PrettyOutput.auto_print(f"⚠️ 获取git diff失败: {str(e)}")
168
- self._git_diff = f"获取git diff失败: {str(e)}"
169
-
170
- # 确定触发原因
171
- if token_limit_triggered and turn_limit_triggered:
172
- trigger_reason = "Token和轮次双重限制触发"
173
- elif token_limit_triggered:
174
- trigger_reason = "Token限制触发"
175
- else:
176
- trigger_reason = "对话轮次限制触发"
177
-
178
- summary_text = self.agent._summarize_and_clear_history(
179
- trigger_reason=trigger_reason
180
- )
181
- if summary_text:
182
- # 将摘要作为下一轮的附加提示加入,从而维持上下文连续性
183
- self.agent.session.addon_prompt = join_prompts(
184
- [self.agent.session.addon_prompt, summary_text]
185
- )
186
- # 重置对话长度计数器(用于摘要触发),开始新一轮周期
187
- # 注意:对话轮次由模型内部管理,这里不需要重置
188
- self.agent.session.conversation_length = 0
189
136
 
190
137
  ag = self.agent
191
138