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.
- {siada_cli-1.3.0 → siada_cli-1.5.3}/PKG-INFO +22 -23
- {siada_cli-1.3.0 → siada_cli-1.5.3}/README.md +18 -22
- {siada_cli-1.3.0 → siada_cli-1.5.3}/agent_config.yaml +9 -2
- {siada_cli-1.3.0 → siada_cli-1.5.3}/pyproject.toml +4 -1
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/bug_fix_agent.py +0 -31
- siada_cli-1.5.3/siada/agent_hub/coder/card_agent.py +121 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/code_gen_agent.py +7 -4
- siada_cli-1.5.3/siada/agent_hub/coder/prompt/base/prompt_builder.py +70 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/bug_prompt/bug_fix_prompt.py +1 -65
- siada_cli-1.5.3/siada/agent_hub/coder/prompt/card_prompt/card_prompt.py +229 -0
- siada_cli-1.5.3/siada/agent_hub/coder/prompt/card_prompt/rules.py +85 -0
- siada_cli-1.5.3/siada/agent_hub/coder/prompt/card_prompt.py +204 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/code_gen_prompt.py +6 -2
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/tracing/logger_tracing_processor.py +4 -3
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/context_filter/api_message_transfer_filter.py +93 -14
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/config/agent_config_loader.py +1 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/config/config_loader.py +22 -14
- siada_cli-1.5.3/siada/config/language_config.py +81 -0
- siada_cli-1.5.3/siada/config/model_config.py +146 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/args_parser/args.py +34 -4
- siada_cli-1.5.3/siada/entrypoint/interaction/controller.py +277 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/running_config.py +5 -1
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/turn/conversation_turn.py +41 -18
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/siadahub.py +95 -28
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/code_agent_context.py +4 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/constants.py +2 -1
- siada_cli-1.5.3/siada/foundation/log_category.py +17 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/logging.py +143 -4
- siada_cli-1.5.3/siada/foundation/siadaignore_controller.py +225 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/tools/get_git_diff.py +18 -16
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/models/model_base_config.py +40 -2
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/models/model_setting_converter.py +4 -1
- siada_cli-1.5.3/siada/provider/default/coverter.py +19 -0
- siada_cli-1.5.3/siada/provider/default/default_provider.py +88 -0
- siada_cli-1.5.3/siada/services/agent_loader.py +101 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/enhanced_fix_result_check.py +10 -10
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/file_recommendation/core/completion_engine.py +4 -3
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/mcp_service.py +2 -1
- siada_cli-1.5.3/siada/services/siada_runner.py +314 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/session/session_manager.py +7 -2
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/session/session_models.py +14 -2
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/session/task_message_state.py +17 -1
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/support/checkpoint_tracker.py +179 -22
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/support/completer.py +1 -1
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/support/slash_commands.py +78 -9
- siada_cli-1.5.3/siada/support/usage_utils.py +72 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/browser/browsergym_action_tool.py +102 -8
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/browser/browsergym_env.py +36 -7
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/browser/chromium_installer.py +9 -9
- siada_cli-1.5.3/siada/tools/browser/local_server_tool.py +200 -0
- siada_cli-1.5.3/siada/tools/cca/card_gen.py +145 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/cca/compile_card.py +30 -16
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/cca/get_cca_resource.py +6 -2
- siada_cli-1.5.3/siada/tools/cca/zip_project.py +66 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/cmd_runner.py +43 -8
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_operator.py +30 -3
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/tool_docs.py +1 -0
- siada_cli-1.5.3/siada/tools/read_many_files/file_processor.py +925 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/read_many_files/filters.py +3 -1
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/read_many_files_tool.py +17 -24
- siada_cli-1.5.3/siada/tools/web/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/utils.py +30 -30
- siada_cli-1.3.0/siada/agent_hub/coder/prompt/base/prompt_builder.py +0 -31
- siada_cli-1.3.0/siada/entrypoint/interaction/controller.py +0 -139
- siada_cli-1.3.0/siada/foundation/li_telemetry.py +0 -3
- siada_cli-1.3.0/siada/services/internal/handles/internal_handler.py +0 -69
- siada_cli-1.3.0/siada/services/siada_runner.py +0 -236
- siada_cli-1.3.0/siada/tools/read_many_files/file_processor.py +0 -486
- {siada_cli-1.3.0 → siada_cli-1.5.3}/LICENSE +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/browser_agent.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/fe_gen_agent.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/issue_review_agent.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/base/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/base/capabilities.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/base/non_interactive.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/base/rules.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/base/tool_use.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/bug_prompt/rules.py +0 -0
- {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
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/compact_prompt.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/fe_gen_prompt.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/issue_review_prompt.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/select_agent.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/tracing/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/tracing/bug_fix_trace_collector.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/context_filter/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/context_filter/base_filter.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/context_filter/context_capture_filter.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/context_filter/message_history_capture_filter.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/context_filter/utils.py +0 -0
- {siada_cli-1.3.0/siada/agent_hub/hooks/agent_processors → siada_cli-1.5.3/siada/agent_hub/hooks}/__init__.py +0 -0
- {siada_cli-1.3.0/siada/config → siada_cli-1.5.3/siada/agent_hub/hooks/agent_processors}/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/hooks/agent_processors/context_track_processor.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/hooks/context_capture_filter.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/hooks/io_hooks.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/hooks/processors/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/hooks/processors/checkpointing_processor.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/hooks/siada_agent_hooks.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/hooks/siada_run_hooks.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/siada_agent.py +0 -0
- {siada_cli-1.3.0/siada/entrypoint/args_parser → siada_cli-1.5.3/siada/config}/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/config/mcp_config.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/config/mcp_config_loader.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/__init__.py +0 -0
- {siada_cli-1.3.0/siada/entrypoint/interaction → siada_cli-1.5.3/siada/entrypoint/args_parser}/__init__.py +0 -0
- {siada_cli-1.3.0/siada/foundation → siada_cli-1.5.3/siada/entrypoint/interaction}/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/base_turn.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/config.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/nointeractive_controller.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/turn/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/turn/command_turn.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/turn/interface.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/turn/models.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/turn/run_turn.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/turn/turn_factory.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/turn_factory.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/entrypoint/interaction/turn_models.py +0 -0
- {siada_cli-1.3.0/siada/foundation/tools → siada_cli-1.5.3/siada/foundation}/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/config.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/context.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/setting.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/telemetry.py +0 -0
- {siada_cli-1.3.0/siada/io → siada_cli-1.5.3/siada/foundation/tools}/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/tools/fix_result_checker_validator.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/tools/issue_type_checker_validator.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/tools/json_util.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/foundation/tools/swebench_extractor.py +0 -0
- {siada_cli-1.3.0/siada/io/components → siada_cli-1.5.3/siada/io}/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/io/banner.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/io/color_settings.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/io/color_utils.py +0 -0
- {siada_cli-1.3.0/siada/models → siada_cli-1.5.3/siada/io/components}/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/io/components/mdstream.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/io/console_printer.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/io/io.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/io/key_bindings.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/io/notification_command.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/io/test_banner.py +0 -0
- {siada_cli-1.3.0/siada/models/coder → siada_cli-1.5.3/siada/models}/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/models/agent.py +0 -0
- {siada_cli-1.3.0/siada/provider → siada_cli-1.5.3/siada/models/coder}/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/models/converter.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/models/model_run_config.py +0 -0
- {siada_cli-1.3.0/siada/provider/openrouter → siada_cli-1.5.3/siada/provider}/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/provider/client_factory.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/provider/llm_client.py +0 -0
- {siada_cli-1.3.0/siada/support → siada_cli-1.5.3/siada/provider/openrouter}/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/provider/openrouter/coverter.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/provider/openrouter/openroute_provider.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/provider/provider_factory.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/README.md +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/README.md +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/c-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/go-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/java-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/php-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/python-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/anomaly_checker.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/anomaly_detection/anomaly_detector_text_only.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/anomaly_detection/text_anomaly_model.pkl +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/at_file_recommendation_design_document.md +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/bug_desc_optimizer.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/checkpointer_recommendation/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/checkpointer_recommendation/checkpoint_recommend.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/code_context_manager.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/execution_trace_collector.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/file_recommendation/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/file_recommendation/core/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/file_recommendation/core/config.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/file_recommendation/core/file_discovery.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/file_recommendation/core/suggestion.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/file_recommendation/utils/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/file_recommendation/utils/path_utils.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/file_recommendation/utils/text_utils.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/file_session.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/fix_result_check.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/git_service.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/handle_at_command/README.md +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/handle_at_command/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/handle_at_command/exceptions.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/handle_at_command/models.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/handle_at_command/parser.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/handle_at_command/processor.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/handle_at_command/resolver.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/handle_at_command/utils.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/input_processor.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/issue_type_checker.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/model_info_service.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/model_wrapper.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/ps_fr_comparator.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/siada_memory.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/strict_fix_result_check.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/version_checker/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/version_checker/base.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/version_checker/handlers/external_handler.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/services/version_checker/version_checker.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/session/__init__.py +0 -0
- {siada_cli-1.3.0/siada/tools → siada_cli-1.5.3/siada/support}/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/support/editor.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/support/envprocessor.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/support/message_classifier.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/support/repo.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/support/spinner.py +0 -0
- {siada_cli-1.3.0/siada/tools/cca → siada_cli-1.5.3/siada/tools}/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/ast/README.md +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/ast/ast_tool.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/ast/models.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/browser/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/browser/browser_action_tool.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/browser/browsergym_utils.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/browser/models.py +0 -0
- {siada_cli-1.3.0/siada/tools/coder → siada_cli-1.5.3/siada/tools/cca}/__init__.py +0 -0
- {siada_cli-1.3.0/siada/tools/coder/observation → siada_cli-1.5.3/siada/tools/coder}/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/ask_followup_question.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_search/README.md +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_search/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_search/bin/rg-linux-arm64 +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_search/bin/rg-linux-x64 +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_search/bin/rg-macos-arm64 +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_search/bin/rg-macos-x64 +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_search/bin/rg.exe +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_search/search.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_search/setup_package.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/file_search/test_search.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/files.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/fix_attempt_completion.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/issue_review_completion.py +0 -0
- {siada_cli-1.3.0/siada/tools/web → siada_cli-1.5.3/siada/tools/coder/observation}/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/observation/error.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/observation/file_observation.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/observation/observation.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/patch_selection_completion.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/repo_map/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/repo_map/dump.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/repo_map/io.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/repo_map/repo_map.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/repo_map/special.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/repo_map/token_counter.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/repo_map/waiting.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/reproduce_completion.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/run_cmd.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/coder/test_completion.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/compression_tool.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/read_many_files/README.md +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/read_many_files/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/read_many_files/formatters.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/read_many_files/models.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/test_failure_analyzer.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/tool_call_format/__init__.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/tool_call_format/file_to_language.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/tool_call_format/formatter_factory.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/tool_call_format/formatters.py +0 -0
- {siada_cli-1.3.0 → siada_cli-1.5.3}/siada/tools/tool_call_format/tool_call_formatter.py +0 -0
- {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
|
|
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
|
-
|
|
72
|
+
### System Requirements
|
|
70
73
|
- MAC, Linux
|
|
71
74
|
- GCC 11+
|
|
75
|
+
- uv
|
|
72
76
|
|
|
73
|
-
|
|
77
|
+
### Installation
|
|
78
|
+
|
|
79
|
+
1. Install uv
|
|
74
80
|
```bash
|
|
75
|
-
curl -
|
|
81
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
76
82
|
```
|
|
77
|
-
|
|
78
|
-
The following output indicates successful installation
|
|
79
|
-

|
|
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
|
-
|
|
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
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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
|
-
|
|
19
|
+
### System Requirements
|
|
20
20
|
- MAC, Linux
|
|
21
21
|
- GCC 11+
|
|
22
|
+
- uv
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
### Installation
|
|
25
|
+
|
|
26
|
+
1. Install uv
|
|
24
27
|
```bash
|
|
25
|
-
curl -
|
|
28
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
26
29
|
```
|
|
27
|
-
|
|
28
|
-
The following output indicates successful installation
|
|
29
|
-

|
|
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
|
-
|
|
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
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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:
|
|
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
|
|
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
|
-
|
|
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 ""
|
{siada_cli-1.3.0 → siada_cli-1.5.3}/siada/agent_hub/coder/prompt/bug_prompt/bug_fix_prompt.py
RENAMED
|
@@ -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.
|