siada-cli 1.3.0__tar.gz → 1.5.3__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 (302) hide show
  1. {siada_cli-1.3.0 → siada_cli-1.5.3}/PKG-INFO +22 -23
  2. {siada_cli-1.3.0 → siada_cli-1.5.3}/README.md +18 -22
  3. {siada_cli-1.3.0 → siada_cli-1.5.3}/agent_config.yaml +9 -2
  4. {siada_cli-1.3.0 → siada_cli-1.5.3}/pyproject.toml +4 -1
  5. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/bug_fix_agent.py +0 -31
  6. siada_cli-1.5.3/siada/agent_hub/coder/card_agent.py +121 -0
  7. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/code_gen_agent.py +7 -4
  8. siada_cli-1.5.3/siada/agent_hub/coder/prompt/base/prompt_builder.py +70 -0
  9. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/bug_prompt/bug_fix_prompt.py +1 -65
  10. siada_cli-1.5.3/siada/agent_hub/coder/prompt/card_prompt/card_prompt.py +229 -0
  11. siada_cli-1.5.3/siada/agent_hub/coder/prompt/card_prompt/rules.py +85 -0
  12. siada_cli-1.5.3/siada/agent_hub/coder/prompt/card_prompt.py +204 -0
  13. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/code_gen_prompt.py +6 -2
  14. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/tracing/logger_tracing_processor.py +4 -3
  15. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/context_filter/api_message_transfer_filter.py +93 -14
  16. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/config/agent_config_loader.py +1 -0
  17. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/config/config_loader.py +22 -14
  18. siada_cli-1.5.3/siada/config/language_config.py +81 -0
  19. siada_cli-1.5.3/siada/config/model_config.py +146 -0
  20. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/args_parser/args.py +34 -4
  21. siada_cli-1.5.3/siada/entrypoint/interaction/controller.py +277 -0
  22. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/running_config.py +5 -1
  23. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/turn/conversation_turn.py +41 -18
  24. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/siadahub.py +95 -28
  25. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/code_agent_context.py +4 -0
  26. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/constants.py +2 -1
  27. siada_cli-1.5.3/siada/foundation/log_category.py +17 -0
  28. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/logging.py +143 -4
  29. siada_cli-1.5.3/siada/foundation/siadaignore_controller.py +225 -0
  30. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/tools/get_git_diff.py +18 -16
  31. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/models/model_base_config.py +40 -2
  32. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/models/model_setting_converter.py +4 -1
  33. siada_cli-1.5.3/siada/provider/default/coverter.py +19 -0
  34. siada_cli-1.5.3/siada/provider/default/default_provider.py +88 -0
  35. siada_cli-1.5.3/siada/services/agent_loader.py +101 -0
  36. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/enhanced_fix_result_check.py +10 -10
  37. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/file_recommendation/core/completion_engine.py +4 -3
  38. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/mcp_service.py +2 -1
  39. siada_cli-1.5.3/siada/services/siada_runner.py +314 -0
  40. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/session/session_manager.py +7 -2
  41. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/session/session_models.py +14 -2
  42. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/session/task_message_state.py +17 -1
  43. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/support/checkpoint_tracker.py +179 -22
  44. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/support/completer.py +1 -1
  45. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/support/slash_commands.py +78 -9
  46. siada_cli-1.5.3/siada/support/usage_utils.py +72 -0
  47. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/browser/browsergym_action_tool.py +102 -8
  48. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/browser/browsergym_env.py +36 -7
  49. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/browser/chromium_installer.py +9 -9
  50. siada_cli-1.5.3/siada/tools/browser/local_server_tool.py +200 -0
  51. siada_cli-1.5.3/siada/tools/cca/card_gen.py +145 -0
  52. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/cca/compile_card.py +30 -16
  53. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/cca/get_cca_resource.py +6 -2
  54. siada_cli-1.5.3/siada/tools/cca/zip_project.py +66 -0
  55. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/cmd_runner.py +43 -8
  56. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_operator.py +30 -3
  57. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/tool_docs.py +1 -0
  58. siada_cli-1.5.3/siada/tools/read_many_files/file_processor.py +925 -0
  59. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/read_many_files/filters.py +3 -1
  60. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/read_many_files_tool.py +17 -24
  61. siada_cli-1.5.3/siada/tools/web/__init__.py +0 -0
  62. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/utils.py +30 -30
  63. siada_cli-1.3.0/siada/agent_hub/coder/prompt/base/prompt_builder.py +0 -31
  64. siada_cli-1.3.0/siada/entrypoint/interaction/controller.py +0 -139
  65. siada_cli-1.3.0/siada/foundation/li_telemetry.py +0 -3
  66. siada_cli-1.3.0/siada/services/internal/handles/internal_handler.py +0 -69
  67. siada_cli-1.3.0/siada/services/siada_runner.py +0 -236
  68. siada_cli-1.3.0/siada/tools/read_many_files/file_processor.py +0 -486
  69. {siada_cli-1.3.0 → siada_cli-1.5.3}/LICENSE +0 -0
  70. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/__init__.py +0 -0
  71. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/__init__.py +0 -0
  72. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/browser_agent.py +0 -0
  73. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/fe_gen_agent.py +0 -0
  74. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/issue_review_agent.py +0 -0
  75. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/__init__.py +0 -0
  76. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/base/__init__.py +0 -0
  77. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/base/capabilities.py +0 -0
  78. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/base/non_interactive.py +0 -0
  79. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/base/rules.py +0 -0
  80. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/base/tool_use.py +0 -0
  81. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/bug_prompt/rules.py +0 -0
  82. {siada_cli-1.3.0/siada/agent_hub/hooks → siada_cli-1.5.3/siada/agent_hub/coder/prompt/card_prompt}/__init__.py +0 -0
  83. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/compact_prompt.py +0 -0
  84. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/fe_gen_prompt.py +0 -0
  85. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/issue_review_prompt.py +0 -0
  86. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/select_agent.py +0 -0
  87. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/tracing/__init__.py +0 -0
  88. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/tracing/bug_fix_trace_collector.py +0 -0
  89. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/context_filter/__init__.py +0 -0
  90. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/context_filter/base_filter.py +0 -0
  91. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/context_filter/context_capture_filter.py +0 -0
  92. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/context_filter/message_history_capture_filter.py +0 -0
  93. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/context_filter/utils.py +0 -0
  94. {siada_cli-1.3.0/siada/agent_hub/hooks/agent_processors → siada_cli-1.5.3/siada/agent_hub/hooks}/__init__.py +0 -0
  95. {siada_cli-1.3.0/siada/config → siada_cli-1.5.3/siada/agent_hub/hooks/agent_processors}/__init__.py +0 -0
  96. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/hooks/agent_processors/context_track_processor.py +0 -0
  97. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/hooks/context_capture_filter.py +0 -0
  98. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/hooks/io_hooks.py +0 -0
  99. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/hooks/processors/__init__.py +0 -0
  100. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/hooks/processors/checkpointing_processor.py +0 -0
  101. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/hooks/siada_agent_hooks.py +0 -0
  102. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/hooks/siada_run_hooks.py +0 -0
  103. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/siada_agent.py +0 -0
  104. {siada_cli-1.3.0/siada/entrypoint/args_parser → siada_cli-1.5.3/siada/config}/__init__.py +0 -0
  105. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/config/mcp_config.py +0 -0
  106. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/config/mcp_config_loader.py +0 -0
  107. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/__init__.py +0 -0
  108. {siada_cli-1.3.0/siada/entrypoint/interaction → siada_cli-1.5.3/siada/entrypoint/args_parser}/__init__.py +0 -0
  109. {siada_cli-1.3.0/siada/foundation → siada_cli-1.5.3/siada/entrypoint/interaction}/__init__.py +0 -0
  110. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/base_turn.py +0 -0
  111. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/config.py +0 -0
  112. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/nointeractive_controller.py +0 -0
  113. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/turn/__init__.py +0 -0
  114. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/turn/command_turn.py +0 -0
  115. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/turn/interface.py +0 -0
  116. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/turn/models.py +0 -0
  117. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/turn/run_turn.py +0 -0
  118. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/turn/turn_factory.py +0 -0
  119. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/turn_factory.py +0 -0
  120. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/turn_models.py +0 -0
  121. {siada_cli-1.3.0/siada/foundation/tools → siada_cli-1.5.3/siada/foundation}/__init__.py +0 -0
  122. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/config.py +0 -0
  123. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/context.py +0 -0
  124. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/setting.py +0 -0
  125. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/telemetry.py +0 -0
  126. {siada_cli-1.3.0/siada/io → siada_cli-1.5.3/siada/foundation/tools}/__init__.py +0 -0
  127. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/tools/fix_result_checker_validator.py +0 -0
  128. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/tools/issue_type_checker_validator.py +0 -0
  129. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/tools/json_util.py +0 -0
  130. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/tools/swebench_extractor.py +0 -0
  131. {siada_cli-1.3.0/siada/io/components → siada_cli-1.5.3/siada/io}/__init__.py +0 -0
  132. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/io/banner.py +0 -0
  133. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/io/color_settings.py +0 -0
  134. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/io/color_utils.py +0 -0
  135. {siada_cli-1.3.0/siada/models → siada_cli-1.5.3/siada/io/components}/__init__.py +0 -0
  136. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/io/components/mdstream.py +0 -0
  137. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/io/console_printer.py +0 -0
  138. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/io/io.py +0 -0
  139. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/io/key_bindings.py +0 -0
  140. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/io/notification_command.py +0 -0
  141. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/io/test_banner.py +0 -0
  142. {siada_cli-1.3.0/siada/models/coder → siada_cli-1.5.3/siada/models}/__init__.py +0 -0
  143. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/models/agent.py +0 -0
  144. {siada_cli-1.3.0/siada/provider → siada_cli-1.5.3/siada/models/coder}/__init__.py +0 -0
  145. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/models/converter.py +0 -0
  146. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/models/model_run_config.py +0 -0
  147. {siada_cli-1.3.0/siada/provider/openrouter → siada_cli-1.5.3/siada/provider}/__init__.py +0 -0
  148. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/provider/client_factory.py +0 -0
  149. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/provider/llm_client.py +0 -0
  150. {siada_cli-1.3.0/siada/support → siada_cli-1.5.3/siada/provider/openrouter}/__init__.py +0 -0
  151. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/provider/openrouter/coverter.py +0 -0
  152. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/provider/openrouter/openroute_provider.py +0 -0
  153. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/provider/provider_factory.py +0 -0
  154. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/README.md +0 -0
  155. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  156. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  157. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  158. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  159. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  160. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  161. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  162. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  163. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  164. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  165. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  166. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  167. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  168. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  169. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  170. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  171. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  172. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  173. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  174. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  175. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  176. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  177. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  178. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  179. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  180. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  181. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  182. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  183. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/README.md +0 -0
  184. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/c-tags.scm +0 -0
  185. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  186. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  187. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/dart-tags.scm +0 -0
  188. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  189. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  190. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/elm-tags.scm +0 -0
  191. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/go-tags.scm +0 -0
  192. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  193. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/java-tags.scm +0 -0
  194. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  195. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  196. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  197. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  198. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/php-tags.scm +0 -0
  199. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/python-tags.scm +0 -0
  200. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/ql-tags.scm +0 -0
  201. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  202. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/rust-tags.scm +0 -0
  203. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/scala-tags.scm +0 -0
  204. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  205. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/__init__.py +0 -0
  206. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/anomaly_checker.py +0 -0
  207. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/anomaly_detection/anomaly_detector_text_only.py +0 -0
  208. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/anomaly_detection/text_anomaly_model.pkl +0 -0
  209. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/at_file_recommendation_design_document.md +0 -0
  210. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/bug_desc_optimizer.py +0 -0
  211. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/checkpointer_recommendation/__init__.py +0 -0
  212. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/checkpointer_recommendation/checkpoint_recommend.py +0 -0
  213. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/code_context_manager.py +0 -0
  214. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/execution_trace_collector.py +0 -0
  215. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/file_recommendation/__init__.py +0 -0
  216. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/file_recommendation/core/__init__.py +0 -0
  217. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/file_recommendation/core/config.py +0 -0
  218. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/file_recommendation/core/file_discovery.py +0 -0
  219. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/file_recommendation/core/suggestion.py +0 -0
  220. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/file_recommendation/utils/__init__.py +0 -0
  221. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/file_recommendation/utils/path_utils.py +0 -0
  222. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/file_recommendation/utils/text_utils.py +0 -0
  223. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/file_session.py +0 -0
  224. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/fix_result_check.py +0 -0
  225. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/git_service.py +0 -0
  226. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/handle_at_command/README.md +0 -0
  227. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/handle_at_command/__init__.py +0 -0
  228. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/handle_at_command/exceptions.py +0 -0
  229. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/handle_at_command/models.py +0 -0
  230. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/handle_at_command/parser.py +0 -0
  231. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/handle_at_command/processor.py +0 -0
  232. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/handle_at_command/resolver.py +0 -0
  233. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/handle_at_command/utils.py +0 -0
  234. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/input_processor.py +0 -0
  235. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/issue_type_checker.py +0 -0
  236. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/model_info_service.py +0 -0
  237. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/model_wrapper.py +0 -0
  238. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/ps_fr_comparator.py +0 -0
  239. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/siada_memory.py +0 -0
  240. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/strict_fix_result_check.py +0 -0
  241. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/version_checker/__init__.py +0 -0
  242. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/version_checker/base.py +0 -0
  243. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/version_checker/handlers/external_handler.py +0 -0
  244. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/version_checker/version_checker.py +0 -0
  245. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/session/__init__.py +0 -0
  246. {siada_cli-1.3.0/siada/tools → siada_cli-1.5.3/siada/support}/__init__.py +0 -0
  247. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/support/editor.py +0 -0
  248. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/support/envprocessor.py +0 -0
  249. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/support/message_classifier.py +0 -0
  250. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/support/repo.py +0 -0
  251. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/support/spinner.py +0 -0
  252. {siada_cli-1.3.0/siada/tools/cca → siada_cli-1.5.3/siada/tools}/__init__.py +0 -0
  253. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/ast/README.md +0 -0
  254. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/ast/ast_tool.py +0 -0
  255. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/ast/models.py +0 -0
  256. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/browser/__init__.py +0 -0
  257. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/browser/browser_action_tool.py +0 -0
  258. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/browser/browsergym_utils.py +0 -0
  259. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/browser/models.py +0 -0
  260. {siada_cli-1.3.0/siada/tools/coder → siada_cli-1.5.3/siada/tools/cca}/__init__.py +0 -0
  261. {siada_cli-1.3.0/siada/tools/coder/observation → siada_cli-1.5.3/siada/tools/coder}/__init__.py +0 -0
  262. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/ask_followup_question.py +0 -0
  263. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_search/README.md +0 -0
  264. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_search/__init__.py +0 -0
  265. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_search/bin/rg-linux-arm64 +0 -0
  266. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_search/bin/rg-linux-x64 +0 -0
  267. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_search/bin/rg-macos-arm64 +0 -0
  268. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_search/bin/rg-macos-x64 +0 -0
  269. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_search/bin/rg.exe +0 -0
  270. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_search/search.py +0 -0
  271. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_search/setup_package.py +0 -0
  272. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_search/test_search.py +0 -0
  273. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/files.py +0 -0
  274. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/fix_attempt_completion.py +0 -0
  275. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/issue_review_completion.py +0 -0
  276. {siada_cli-1.3.0/siada/tools/web → siada_cli-1.5.3/siada/tools/coder/observation}/__init__.py +0 -0
  277. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/observation/error.py +0 -0
  278. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/observation/file_observation.py +0 -0
  279. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/observation/observation.py +0 -0
  280. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/patch_selection_completion.py +0 -0
  281. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/repo_map/__init__.py +0 -0
  282. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/repo_map/dump.py +0 -0
  283. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/repo_map/io.py +0 -0
  284. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/repo_map/repo_map.py +0 -0
  285. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/repo_map/special.py +0 -0
  286. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/repo_map/token_counter.py +0 -0
  287. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/repo_map/waiting.py +0 -0
  288. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/reproduce_completion.py +0 -0
  289. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/run_cmd.py +0 -0
  290. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/test_completion.py +0 -0
  291. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/compression_tool.py +0 -0
  292. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/read_many_files/README.md +0 -0
  293. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/read_many_files/__init__.py +0 -0
  294. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/read_many_files/formatters.py +0 -0
  295. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/read_many_files/models.py +0 -0
  296. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/test_failure_analyzer.py +0 -0
  297. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/tool_call_format/__init__.py +0 -0
  298. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/tool_call_format/file_to_language.py +0 -0
  299. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/tool_call_format/formatter_factory.py +0 -0
  300. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/tool_call_format/formatters.py +0 -0
  301. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/tool_call_format/tool_call_formatter.py +0 -0
  302. {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/web/web_crawl.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: siada-cli
3
- Version: 1.3.0
3
+ Version: 1.5.3
4
4
  Summary: Siada CLI is a Ai Pair Programming Tool in terminal
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -16,12 +16,14 @@ Classifier: Programming Language :: Python :: 3.14
16
16
  Classifier: Topic :: Software Development
17
17
  Requires-Dist: aiohttp (>=3.8.0,<4.0.0)
18
18
  Requires-Dist: binaryornot (==0.4.4)
19
+ Requires-Dist: browsergym (>=0.14.2,<0.15.0)
19
20
  Requires-Dist: click (>=8.2.1,<9.0.0)
20
21
  Requires-Dist: configargparse (>=1.7,<2.0.0)
21
22
  Requires-Dist: diskcache (==5.6.3)
22
23
  Requires-Dist: fastapi (>=0.110.0,<1.0.0)
23
24
  Requires-Dist: gitpython (>=3.1.0,<4.0.0)
24
25
  Requires-Dist: grep-ast (>=0.9.0,<1.0.0)
26
+ Requires-Dist: gymnasium (>=1.2.0,<2.0.0)
25
27
  Requires-Dist: litellm (>=1.72.6,<2.0.0)
26
28
  Requires-Dist: mcp (>=1.0.0,<2.0.0)
27
29
  Requires-Dist: networkx (>=3.5.0,<4.0.0)
@@ -32,6 +34,7 @@ Requires-Dist: openhands-aci (==0.3.0)
32
34
  Requires-Dist: pandas (>=2.0.0,<3.0.0)
33
35
  Requires-Dist: partial-json-parser (>=0.2.1.1.post6,<1.0.0)
34
36
  Requires-Dist: patch-ng (>=1.18.1,<2.0.0)
37
+ Requires-Dist: pathspec (>=0.12.0,<1.0.0)
35
38
  Requires-Dist: pexpect (>=4.9.0,<5.0.0)
36
39
  Requires-Dist: playwright (>=1.40.0,<2.0.0)
37
40
  Requires-Dist: prompt-toolkit (>=3.0.51,<4.0.0)
@@ -66,37 +69,33 @@ With Siada CLI you can:
66
69
 
67
70
  ## Installation/Update
68
71
 
69
- 1. System Requirements
72
+ ### System Requirements
70
73
  - MAC, Linux
71
74
  - GCC 11+
75
+ - uv
72
76
 
73
- 2. Installation Command
77
+ ### Installation
78
+
79
+ 1. Install uv
74
80
  ```bash
75
- curl -s https://bj.bcebos.com/prod-cnhb01-siada/cli-install/prod/remote_install.sh | sh
81
+ curl -LsSf https://astral.sh/uv/install.sh | sh
76
82
  ```
77
-
78
- The following output indicates successful installation
79
- ![siada-cli installed successfully](./docs/assets/siada-cli-installed-successfully.png)
80
-
81
- After installation, you need to add ~/.local/bin to PATH according to the prompt (skip if already added) to ensure siada-cli can be used in shell
83
+ 2. Install siada-cli
82
84
  ```bash
83
- # Bash
84
- echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
85
- source ~/.bashrc
86
-
87
- # Zsh
88
- echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
89
- source ~/.zshrc
85
+ uv tool install --force --python python3.12 --with pip siada-cli@latest --no-build-package pyarrow
90
86
  ```
91
-
92
- Verify successful installation
87
+ If the siada-cli directory is not present on the PATH, run the follow command to update the shell
93
88
  ```bash
94
- siada-cli --version
95
-
96
- # Successfully outputting version number indicates successful installation
97
- siada-cli 0.0.1
89
+ uv tool update-shell
90
+ ```
91
+ ### Update
92
+ ```bash
93
+ uv tool upgrade siada-cli
94
+ ```
95
+ ### Uninstall
96
+ ```bash
97
+ uv tool uninstall siada-cli
98
98
  ```
99
-
100
99
 
101
100
  ## Installation (Developer Mode)
102
101
 
@@ -16,37 +16,33 @@ With Siada CLI you can:
16
16
 
17
17
  ## Installation/Update
18
18
 
19
- 1. System Requirements
19
+ ### System Requirements
20
20
  - MAC, Linux
21
21
  - GCC 11+
22
+ - uv
22
23
 
23
- 2. Installation Command
24
+ ### Installation
25
+
26
+ 1. Install uv
24
27
  ```bash
25
- curl -s https://bj.bcebos.com/prod-cnhb01-siada/cli-install/prod/remote_install.sh | sh
28
+ curl -LsSf https://astral.sh/uv/install.sh | sh
26
29
  ```
27
-
28
- The following output indicates successful installation
29
- ![siada-cli installed successfully](./docs/assets/siada-cli-installed-successfully.png)
30
-
31
- After installation, you need to add ~/.local/bin to PATH according to the prompt (skip if already added) to ensure siada-cli can be used in shell
30
+ 2. Install siada-cli
32
31
  ```bash
33
- # Bash
34
- echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
35
- source ~/.bashrc
36
-
37
- # Zsh
38
- echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
39
- source ~/.zshrc
32
+ uv tool install --force --python python3.12 --with pip siada-cli@latest --no-build-package pyarrow
40
33
  ```
41
-
42
- Verify successful installation
34
+ If the siada-cli directory is not present on the PATH, run the follow command to update the shell
43
35
  ```bash
44
- siada-cli --version
45
-
46
- # Successfully outputting version number indicates successful installation
47
- siada-cli 0.0.1
36
+ uv tool update-shell
37
+ ```
38
+ ### Update
39
+ ```bash
40
+ uv tool upgrade siada-cli
41
+ ```
42
+ ### Uninstall
43
+ ```bash
44
+ uv tool uninstall siada-cli
48
45
  ```
49
-
50
46
 
51
47
  ## Installation (Developer Mode)
52
48
 
@@ -41,10 +41,17 @@ agents:
41
41
  enabled: false
42
42
  supported_modes: "non_interactive"
43
43
 
44
+ card:
45
+ class: "siada.agent_hub.coder.card_agent.CardAgent"
46
+ description: "Card Generation agent"
47
+ enabled: true
48
+ supported_modes: "all"
49
+
50
+
44
51
  # LLM Configuration
45
52
  llm_config:
46
- provider: "li" # Optional: ”li“ , “openrouter”
47
- model_name: "claude-sonnet-4"
53
+ provider: "li" # Optional: "li" , "openrouter", "default"
54
+ model_name: "claude-sonnet-4.5"
48
55
  repo_map_tokens: 8192 # repo map max token
49
56
  repo_map_mul_no_files: 16 # Multiple without chat files
50
57
  repo_verbose: true # Enable detailed output or not
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "siada-cli"
3
- version = "1.3.0"
3
+ version = "1.5.3"
4
4
  description = "Siada CLI is a Ai Pair Programming Tool in terminal"
5
5
  packages = [{include = "siada"}, {include = "agent_config.yaml"}]
6
6
  include = ["agent_config.yaml"]
@@ -47,11 +47,14 @@ partial-json-parser = ">=0.2.1.1.post6,<1.0.0"
47
47
  networkx = ">=3.5.0,<4.0.0"
48
48
  playwright = ">=1.40.0,<2.0.0"
49
49
  gitpython = ">=3.1.0,<4.0.0"
50
+ pathspec = ">=0.12.0,<1.0.0"
50
51
  mcp = ">=1.0.0,<2.0.0"
51
52
  aiohttp = ">=3.8.0,<4.0.0"
52
53
  numpy = ">=1.24.0,<2.0.0"
53
54
  pandas = ">=2.0.0,<3.0.0"
54
55
  scikit-learn = ">=1.3.0,<2.0.0"
56
+ browsergym = "^0.14.2"
57
+ gymnasium = "^1.2.0"
55
58
 
56
59
 
57
60
  [tool.poetry.group.dev.dependencies]
@@ -1,18 +1,14 @@
1
1
  import ast
2
2
  from datetime import datetime
3
- from math import comb
4
3
  import os
5
- import re
6
4
  import subprocess
7
5
 
8
6
  from agents import RunContextWrapper, RunResult, RunResultStreaming, Runner
9
- from numpy import fix
10
7
 
11
8
  from siada.agent_hub.coder.code_gen_agent import CodeGenAgent
12
9
  from siada.agent_hub.coder.select_agent import SelectAgent
13
10
  from siada.agent_hub.coder.prompt.bug_prompt import bug_fix_prompt
14
11
  from siada.agent_hub.coder.tracing.bug_fix_trace_collector import BugFixTraceCollector,create_custom_bug_fix_trace_collector
15
- from siada.foundation import code_agent_context
16
12
  from siada.foundation.code_agent_context import CodeAgentContext
17
13
  from siada.foundation.setting import settings
18
14
  from siada.foundation.tools.get_git_diff import GitDiffUtil
@@ -29,7 +25,6 @@ from siada.tools.coder.fix_attempt_completion import fix_attempt_completion
29
25
  from siada.services.enhanced_fix_result_check import EnhancedFixResultChecker
30
26
  from typing import Optional, List, Dict, Any
31
27
  from openai.types.responses import ResponseFunctionToolCall, ResponseOutputMessage
32
- import json
33
28
  from agents import add_trace_processor
34
29
  from siada.services.anomaly_detection.anomaly_detector_text_only import AnomalyDetectorTextOnly
35
30
 
@@ -262,25 +257,6 @@ class BugFixAgent(CodeGenAgent):
262
257
  print(f"Fix process completed in {fix_turn} rounds.")
263
258
  return result
264
259
 
265
- def build_compare_result(self, task_message: dict, reason: str) -> list:
266
- feedback_message = {
267
- "content": f"The previous fix attempt did not fully address the issue. Reason: {reason}.\n"
268
- f"**Please continue fixing.**",
269
- "role": "user"
270
- }
271
- input_list = [task_message, feedback_message]
272
- return input_list
273
-
274
- async def run_compare(self, context, user_input, trace_collector: Optional["BugFixTraceCollector"] = None):
275
- diff_patch = GitDiffUtil.get_git_diff_exclude_test_files(context.root_dir)
276
- compare_result = await PsFrComparator.compare(user_input, diff_patch, context, trace_collector=trace_collector)
277
- return compare_result
278
-
279
- def test_best_patch_selection(self, context: CodeAgentContext) -> bool:
280
- self.trace_collector.load_from_json(f"/siada-agenthub/trace_test.json")
281
- patch_list=self.trace_collector.trace_session.patch_selection.input_patches
282
- self.select_agent._apply_selected_patch(patch_list[1], context)
283
-
284
260
  def struct_user_input(self, user_input: str) -> str:
285
261
  task = f"""
286
262
  **Issue Description:**
@@ -291,13 +267,6 @@ class BugFixAgent(CodeGenAgent):
291
267
 
292
268
  return task
293
269
 
294
- async def run_checker_by_agent(self, user_input: str, context: CodeAgentContext):
295
-
296
- result = await self.issue_review_agent.run(user_input, context)
297
-
298
- output = ast.literal_eval(result.final_output)
299
- return output
300
-
301
270
  async def run_checker(self, user_input: str, context: CodeAgentContext, trace_collector: Optional[BugFixTraceCollector] = None) -> dict:
302
271
 
303
272
  diff_patch = GitDiffUtil.get_git_diff_exclude_test_files(context.root_dir)
@@ -0,0 +1,121 @@
1
+ from pathlib import Path
2
+ from typing import List
3
+
4
+ from agents import RunContextWrapper, RunResult, RunResultStreaming, \
5
+ TResponseInputItem
6
+
7
+ from siada.agent_hub.coder.prompt.card_prompt.card_prompt import get_system_prompt
8
+ from siada.agent_hub.siada_agent import SiadaAgent
9
+ from siada.foundation.code_agent_context import CodeAgentContext
10
+ from siada.agent_hub.coder.prompt import card_prompt
11
+ from siada.foundation.setting import settings
12
+ from siada.tools.browser.browsergym_action_tool import browser_operate_by_gym
13
+ from siada.tools.browser.local_server_tool import start_local_html_server, stop_local_html_server
14
+ from siada.tools.cca.compile_card import compile_card
15
+ from siada.tools.cca.zip_project import zip_project
16
+ from siada.tools.coder.ask_followup_question import ask_followup_question
17
+ from siada.tools.coder.file_operator import edit
18
+ from siada.tools.coder.run_cmd import run_cmd
19
+ import logging
20
+
21
+
22
+ logging.getLogger().setLevel(logging.INFO)
23
+ class CardAgent(SiadaAgent[CodeAgentContext]):
24
+ root_path = None
25
+
26
+ def __init__(self, *args, **kwargs):
27
+ self.root_path = self._check_cca_directory()
28
+
29
+ super().__init__(
30
+ name="CardAgent",
31
+ tools=[edit, run_cmd, ask_followup_question, compile_card, zip_project, browser_operate_by_gym, start_local_html_server, stop_local_html_server],
32
+ *args,
33
+ **kwargs
34
+ )
35
+
36
+ async def get_system_prompt(self, run_context: RunContextWrapper[CodeAgentContext]) -> str | None:
37
+ # Get preferred language and agent name from session config
38
+ preferred_language = run_context.context.session.siada_config.preferred_language
39
+ agent_name = run_context.context.session.siada_config.agent_name
40
+ system_prompt = get_system_prompt(self.root_path, preferred_language=preferred_language, agent_name=agent_name)
41
+ return system_prompt
42
+
43
+ async def get_context(self) -> CodeAgentContext:
44
+ context = CodeAgentContext()
45
+ return context
46
+
47
+
48
+ def _check_cca_directory(self):
49
+ """
50
+ Find the directory path containing mindui-components folder
51
+
52
+ Returns:
53
+ Directory path containing mindui-components folder
54
+ """
55
+ current_path = Path.cwd()
56
+
57
+ # Search upward from current directory
58
+ for path in [current_path] + list(current_path.parents):
59
+ cca_path = path / "mindui-components"
60
+ if cca_path.exists() and cca_path.is_dir():
61
+ return str(cca_path)
62
+
63
+ # If not found, execute get_cca_resource and return current working directory
64
+ return str(current_path)
65
+
66
+ def assemble_user_input(
67
+ self, user_input: str | List[TResponseInputItem], context: CodeAgentContext
68
+ ) -> any:
69
+ if isinstance(user_input, list):
70
+ return user_input
71
+ task = f"<task>\n{user_input}\n</task>\n\n【Development Directory Path: {self.root_path}】"
72
+ return task
73
+
74
+ async def run(self, user_input: str| List[TResponseInputItem], context: CodeAgentContext) -> RunResult:
75
+ input_with_env = self.assemble_user_input(user_input, context)
76
+ result = await self.run_impl(
77
+ starting_agent=self,
78
+ input=input_with_env,
79
+ max_turns=settings.MAX_TURNS,
80
+ context=context,
81
+ )
82
+
83
+ return result
84
+
85
+ async def run_streamed(
86
+ self, user_input: str| List[TResponseInputItem], context: CodeAgentContext
87
+ ) -> RunResultStreaming:
88
+ """
89
+ Execute code generation task with streaming output.
90
+
91
+ Args:
92
+ user_input: User's code generation request with requirements and specifications
93
+ context: Context object providing project information
94
+ Returns:
95
+ A streaming result of the generation, containing final output and execution details.
96
+ """
97
+
98
+ input_with_env = self.assemble_user_input(user_input, context)
99
+
100
+ result = await self.run_streamed_impl(
101
+ starting_agent=self,
102
+ input=input_with_env,
103
+ context=context,
104
+ max_turns=settings.MAX_TURNS,
105
+ )
106
+
107
+ return result
108
+
109
+
110
+ async def main():
111
+ agent = CardAgent()
112
+ context = await agent.get_context()
113
+ await agent.run_streamed("?", context)
114
+
115
+
116
+ if __name__ == '__main__':
117
+ import asyncio
118
+ import warnings
119
+
120
+ warnings.filterwarnings("ignore")
121
+ asyncio.run(main())
@@ -45,7 +45,10 @@ class CodeGenAgent(SiadaAgent[CodeAgentContext]):
45
45
  root_dir = run_context.context.root_dir
46
46
  # Get user memory from context
47
47
  user_memory = run_context.context.user_memory
48
- system_prompt = code_gen_prompt.get_system_prompt(root_dir, run_context.context.interactive_mode, user_memory)
48
+ # Get preferred language and agent name from session config
49
+ preferred_language = run_context.context.session.siada_config.preferred_language
50
+ agent_name = run_context.context.session.siada_config.agent_name
51
+ system_prompt = code_gen_prompt.get_system_prompt(root_dir, run_context.context.interactive_mode, user_memory, preferred_language, agent_name)
49
52
  return system_prompt
50
53
 
51
54
  async def get_context(self) -> CodeAgentContext:
@@ -58,7 +61,7 @@ class CodeGenAgent(SiadaAgent[CodeAgentContext]):
58
61
  )
59
62
  return context
60
63
 
61
- async def process_at_commands(self, user_input: str, context: CodeAgentContext) -> str:
64
+ async def process_at_commands(self, user_input: str| List[TResponseInputItem], context: CodeAgentContext) -> str:
62
65
  """
63
66
  Process @ commands in user input and return processed input
64
67
 
@@ -116,7 +119,7 @@ class CodeGenAgent(SiadaAgent[CodeAgentContext]):
116
119
  logging.warning(f"Failed to process @ commands: {e}")
117
120
  return user_input
118
121
 
119
- async def run(self, user_input: str, context: CodeAgentContext) -> RunResult:
122
+ async def run(self, user_input: str| List[TResponseInputItem], context: CodeAgentContext) -> RunResult:
120
123
  """
121
124
  Execute code generation task.
122
125
 
@@ -141,7 +144,7 @@ class CodeGenAgent(SiadaAgent[CodeAgentContext]):
141
144
  return result
142
145
 
143
146
  async def run_streamed(
144
- self, user_input: str, context: CodeAgentContext
147
+ self, user_input: str| List[TResponseInputItem], context: CodeAgentContext
145
148
  ) -> RunResultStreaming:
146
149
  """
147
150
  Execute code generation task with streaming output.
@@ -0,0 +1,70 @@
1
+ def build_system_prompt(intro: str, tool_use: str, capabilities: str, rules: str, objective: str, user_memory: str = None, preferred_language: str = "en", agent_name: str = None) -> str:
2
+ """
3
+ Common function for building system prompts
4
+
5
+ Args:
6
+ intro: Agent-specific introduction section
7
+ tool_use: Tool usage section
8
+ capabilities: Capabilities section
9
+ rules: Rules section
10
+ objective: Objective section
11
+ user_memory: User memory content from siada.md file
12
+ preferred_language: Preferred communication language ("en" or "zh-CN")
13
+ agent_name: Agent name to determine default language (optional)
14
+
15
+ Returns:
16
+ str: Complete system prompt
17
+ """
18
+ # Build language instruction section
19
+ language_instruction = _get_language_instruction(preferred_language, agent_name)
20
+
21
+ # Assemble complete prompt
22
+ base_prompt = f"""{intro}
23
+
24
+ {tool_use}
25
+
26
+ {capabilities}
27
+
28
+ {rules}
29
+
30
+ {objective}
31
+
32
+ {language_instruction}"""
33
+
34
+ # Add user memory content if available
35
+ if user_memory and user_memory.strip():
36
+ memory_suffix = f"====\n\n{user_memory.strip()}"
37
+ return f"{base_prompt}{memory_suffix}"
38
+
39
+ return base_prompt
40
+
41
+
42
+ def _get_language_instruction(preferred_language: str, agent_name: str = None) -> str:
43
+ """
44
+ Get language preference instruction based on user's choice.
45
+ Only returns instruction if the preferred language differs from the agent's default language.
46
+
47
+ Args:
48
+ preferred_language: "en" or "zh-CN"
49
+ agent_name: Agent name to determine default language (optional)
50
+
51
+ Returns:
52
+ str: Language instruction section, or empty string if using default language
53
+ """
54
+ from siada.config.language_config import get_agent_default_language
55
+
56
+ # Get the default language for this agent
57
+ default_language = get_agent_default_language(agent_name) if agent_name else "en"
58
+
59
+ # Only return instruction if preferred language differs from default
60
+ if preferred_language != default_language:
61
+ return f"""====
62
+
63
+ PREFERRED LANGUAGE
64
+
65
+ Speak in {preferred_language}.
66
+
67
+
68
+ """
69
+
70
+ return ""
@@ -5,77 +5,13 @@ from ..base.capabilities import get_capabilities_section
5
5
  from ..base.prompt_builder import build_system_prompt
6
6
  from .rules import get_rules_section
7
7
 
8
-
9
- def get_system_prompt(cwd: str = "/default/path", is_minimal: bool=False, new_rule:str="", user_memory: str = None) -> str:
10
- """
11
- 生成系统提示词
12
-
13
- Args:
14
- cwd: 当前工作目录路径
15
- is_minimal: 是否使用最小化规则
16
- user_memory: 用户内存内容(来自siada.md文件)
17
-
18
- Returns:
19
- 格式化后的系统提示词
20
- """
21
- # 获取系统信息
22
- os_name = platform.system()
23
- home_dir = os.path.expanduser("~")
24
-
25
- # Bug修复Agent的特定介绍
26
- if is_minimal:
27
- intro = """
28
- You are Siada, a specialized bug fix agent with extensive knowledge in many programming languages, frameworks, design patterns, and foundational logical principles.
29
-
30
- Your core mission is to diagnose and resolve bugs based on given issue descriptions and code context. You are an expert at making minimal, surgical changes that completely fix the problem, ensure robustness, and maintain the integrity of the existing codebase.
31
-
32
- """
33
- else:
34
- intro = """
35
- You are Siada, a specialized bug fix agent with extensive knowledge in many programming languages, frameworks, design patterns, and foundational logical principles.
36
- """
37
-
38
- # Bug修复Agent的特定目标
39
- objective = """OBJECTIVE
40
-
41
- You accomplish a given task iteratively, breaking it down into clear steps and working through them methodically.
42
- Your goal is to fix the given issue, and the fix is considered successful when the test cases related to this issue pass.
43
-
44
- 1. Analyze the user's task and set clear, achievable goals to accomplish it. Prioritize these goals in a logical order.
45
- 2. Work through these goals sequentially, utilizing available tools one at a time as necessary. Each goal should correspond to a distinct step in your problem-solving process.
46
- 3. Remember, you have extensive capabilities with access to a wide range of tools that can be used in powerful and clever ways as necessary to accomplish each goal. Before calling a tool, do some analysis within <thinking></thinking> tags. First, analyze the file structure provided in environment_details to gain context and insights for proceeding effectively. Then, think about which of the provided tools is the most relevant tool to accomplish the user's task. Next, go through each of the required parameters of the relevant tool and determine if the user has directly provided or given enough information to infer a value. When deciding if the parameter can be inferred, carefully consider all the context to see if it supports a specific value.
47
-
48
-
49
- """
50
-
51
- return build_system_prompt(
52
- intro=intro,
53
- tool_use=get_tool_use_section(),
54
- capabilities=get_capabilities_section(cwd),
55
- rules=get_rules_section(cwd, os_name, home_dir, is_minimal=is_minimal, new_rule=new_rule),
56
- objective=objective,
57
- user_memory=user_memory
58
- )
59
-
60
8
  def get_system_prompt_web(cwd: str = "/default/path", is_minimal: bool=False, new_rule:str="", user_memory: str = None) -> str:
61
- """
62
- 生成系统提示词
63
-
64
- Args:
65
- cwd: 当前工作目录路径
66
- interactive_mode: 是否为交互模式
67
-
68
- Returns:
69
- 格式化后的系统提示词
70
- """
71
- # 获取系统信息
9
+ # system information
72
10
  os_name = platform.system()
73
11
  home_dir = os.path.expanduser("~")
74
12
 
75
- # Bug修复Agent的特定介绍
76
13
  intro = """You are Siada, a bug fix agent with extensive knowledge in many programming languages, frameworks, design patterns, and best practices."""
77
14
 
78
- # Bug修复Agent的特定目标
79
15
  objective = """OBJECTIVE
80
16
 
81
17
  You accomplish a given task iteratively, breaking it down into clear steps and working through them methodically.