quantalogic 0.2.26__tar.gz → 0.2.29__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.
- {quantalogic-0.2.26 → quantalogic-0.2.29}/PKG-INFO +8 -2
- {quantalogic-0.2.26 → quantalogic-0.2.29}/README.md +3 -1
- {quantalogic-0.2.26 → quantalogic-0.2.29}/pyproject.toml +5 -1
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/coding_agent.py +3 -1
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/__init__.py +7 -1
- quantalogic-0.2.29/quantalogic/tools/execute_bash_command_tool.py +133 -0
- quantalogic-0.2.29/quantalogic/tools/generate_database_report_tool.py +52 -0
- quantalogic-0.2.29/quantalogic/tools/grep_app_tool.py +499 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/replace_in_file_tool.py +23 -13
- quantalogic-0.2.29/quantalogic/tools/sql_query_tool.py +167 -0
- quantalogic-0.2.29/quantalogic/tools/utils/__init__.py +13 -0
- quantalogic-0.2.29/quantalogic/tools/utils/create_sample_database.py +124 -0
- quantalogic-0.2.29/quantalogic/tools/utils/generate_database_report.py +289 -0
- quantalogic-0.2.26/quantalogic/.DS_Store +0 -0
- quantalogic-0.2.26/quantalogic/server/__pycache__/__init__.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/server/__pycache__/agent_server.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/server/__pycache__/models.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/server/__pycache__/state.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/__init__.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/__init__.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/agent_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/agent_tool.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/attempt_reply.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/coder_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/context_diff_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/dalle_e.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/diff_patch_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/download_http_file_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/download_http_file_tool.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/duckduckgo_search_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/edit_whole_content_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/edit_whole_content_tool.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/elixir_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/elixir_tool.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/execute_bash_command_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/execute_bash_command_tool.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/input_question_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/input_question_tool.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/jinja_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/list_code_definitions_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/list_directory_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/list_directory_tool.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/llm_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/llm_tool.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/llm_vision_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/markitdown_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/markitdown_tool.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/nodejs_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/nodejs_tool.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/python_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/python_tool.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/read_file_block_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/read_file_block_tool.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/read_file_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/read_file_tool.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/read_html_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/replace_in_file_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/replace_in_file_tool.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/repository_map_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/ripgrep_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/ripgrep_tool.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/search_definition_names.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/search_definition_names.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/search_replace_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/serpapi_search_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/serpapi_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/task_complete_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/task_complete_tool.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/tool.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/unified_diff_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/unified_diff_tool.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/variable_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/wikipedia_search_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/wikipedia_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/write_file_tool.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/__pycache__/write_file_tool.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/execute_bash_command_tool.py +0 -116
- quantalogic-0.2.26/quantalogic/tools/language_handlers/__pycache__/__init__.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/language_handlers/__pycache__/__init__.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/language_handlers/__pycache__/c_handler.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/language_handlers/__pycache__/c_handler.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/language_handlers/__pycache__/cpp_handler.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/language_handlers/__pycache__/cpp_handler.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/language_handlers/__pycache__/go_handler.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/language_handlers/__pycache__/go_handler.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/language_handlers/__pycache__/java_handler.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/language_handlers/__pycache__/java_handler.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/language_handlers/__pycache__/javascript_handler.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/language_handlers/__pycache__/javascript_handler.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/language_handlers/__pycache__/language_handlers.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/language_handlers/__pycache__/python_handler.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/language_handlers/__pycache__/python_handler.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/language_handlers/__pycache__/rust_handler.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/language_handlers/__pycache__/rust_handler.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/language_handlers/__pycache__/scala_handler.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/language_handlers/__pycache__/scala_handler.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/language_handlers/__pycache__/typescript_handler.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/language_handlers/__pycache__/typescript_handler.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/tools/utils/__pycache__/git_ls.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/utils/__pycache__/__init__.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/utils/__pycache__/__init__.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/utils/__pycache__/ask_user_validation.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/utils/__pycache__/check_version.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/utils/__pycache__/download_http_file.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/utils/__pycache__/download_http_file.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/utils/__pycache__/get_coding_environment.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/utils/__pycache__/get_environment.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/utils/__pycache__/get_quantalogic_rules_content.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/utils/__pycache__/git_ls.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/utils/__pycache__/logger_config.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/utils/__pycache__/memory_utils.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/utils/__pycache__/read_file.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/utils/__pycache__/read_file.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/utils/__pycache__/read_http_text_content.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/utils/__pycache__/read_http_text_content.cpython-313.pyc +0 -0
- quantalogic-0.2.26/quantalogic/utils/__pycache__/spinner.cpython-312.pyc +0 -0
- quantalogic-0.2.26/quantalogic/utils/__pycache__/version_check.cpython-312.pyc +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/LICENSE +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/__init__.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/agent.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/agent_config.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/agent_factory.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/console_print_events.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/console_print_token.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/docs_cli.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/event_emitter.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/generative_model.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/get_model_info.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/interactive_text_editor.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/main.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/memory.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/model_names.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/prompts.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/search_agent.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/server/__init__.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/server/agent_server.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/server/models.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/server/routes.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/server/state.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/server/static/js/event_visualizer.js +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/server/static/js/quantalogic.js +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/server/templates/index.html +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/task_file_reader.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/task_runner.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tool_manager.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/agent_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/dalle_e.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/download_http_file_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/duckduckgo_search_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/edit_whole_content_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/elixir_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/input_question_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/jinja_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/language_handlers/__init__.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/language_handlers/c_handler.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/language_handlers/cpp_handler.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/language_handlers/go_handler.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/language_handlers/java_handler.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/language_handlers/javascript_handler.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/language_handlers/python_handler.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/language_handlers/rust_handler.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/language_handlers/scala_handler.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/language_handlers/typescript_handler.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/list_directory_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/llm_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/llm_vision_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/markitdown_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/nodejs_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/python_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/read_file_block_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/read_file_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/read_html_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/ripgrep_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/search_definition_names.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/serpapi_search_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/task_complete_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/unified_diff_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/wikipedia_search_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/tools/write_file_tool.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/utils/__init__.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/utils/ask_user_validation.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/utils/check_version.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/utils/download_http_file.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/utils/get_coding_environment.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/utils/get_environment.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/utils/get_quantalogic_rules_content.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/utils/git_ls.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/utils/read_file.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/utils/read_http_text_content.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/version.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/version_check.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/welcome_message.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/xml_parser.py +0 -0
- {quantalogic-0.2.26 → quantalogic-0.2.29}/quantalogic/xml_tool_parser.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: quantalogic
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.29
|
4
4
|
Summary: QuantaLogic ReAct Agents
|
5
5
|
Author: Raphaël MANSUY
|
6
6
|
Author-email: raphael.mansuy@gmail.com
|
@@ -12,6 +12,7 @@ Requires-Dist: beautifulsoup4 (>=4.12.3,<5.0.0)
|
|
12
12
|
Requires-Dist: boto3 (>=1.35.86,<2.0.0)
|
13
13
|
Requires-Dist: click (>=8.1.8,<9.0.0)
|
14
14
|
Requires-Dist: duckduckgo-search (>=7.2.1,<8.0.0)
|
15
|
+
Requires-Dist: faker (>=33.3.1,<34.0.0)
|
15
16
|
Requires-Dist: fastapi (>=0.115.6,<0.116.0)
|
16
17
|
Requires-Dist: google-auth (>=2.20.0,<3.0.0)
|
17
18
|
Requires-Dist: google-search-results (>=2.4.2,<3.0.0)
|
@@ -28,13 +29,16 @@ Requires-Dist: mkdocs-mermaid2-plugin (>=1.1.1,<2.0.0)
|
|
28
29
|
Requires-Dist: mkdocs-minify-plugin (>=0.7.1,<0.8.0)
|
29
30
|
Requires-Dist: mkdocstrings (>=0.24.0,<0.25.0)
|
30
31
|
Requires-Dist: mkdocstrings-python (>=1.7.0,<2.0.0)
|
32
|
+
Requires-Dist: networkx (>=3.4.2,<4.0.0)
|
31
33
|
Requires-Dist: pathspec (>=0.12.1,<0.13.0)
|
32
34
|
Requires-Dist: prompt-toolkit (>=3.0.48,<4.0.0)
|
33
35
|
Requires-Dist: pydantic (>=2.10.4,<3.0.0)
|
34
36
|
Requires-Dist: pymdown-extensions (>=10.3.1,<11.0.0)
|
37
|
+
Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
|
35
38
|
Requires-Dist: requests (>=2.32.3,<3.0.0)
|
36
39
|
Requires-Dist: rich (>=13.9.4,<14.0.0)
|
37
40
|
Requires-Dist: serpapi (>=0.1.5,<0.2.0)
|
41
|
+
Requires-Dist: sqlalchemy (>=2.0.37,<3.0.0)
|
38
42
|
Requires-Dist: tenacity (>=9.0.0,<10.0.0)
|
39
43
|
Requires-Dist: toml (>=0.10.2,<0.11.0)
|
40
44
|
Requires-Dist: tree-sitter (>=0.23.2,<0.24.0)
|
@@ -59,8 +63,10 @@ Description-Content-Type: text/markdown
|
|
59
63
|
[](https://quantalogic.github.io/quantalogic/)
|
60
64
|
|
61
65
|
|
66
|
+
|
62
67
|
QuantaLogic is a ReAct (Reasoning & Action) framework for building advanced AI agents.
|
63
68
|
|
69
|
+
|
64
70
|
It seamlessly integrates large language models (LLMs) with a robust tool system, enabling agents to understand, reason about, and execute complex tasks through natural language interaction.
|
65
71
|
|
66
72
|
The `cli` version include coding capabilities comparable to Aider.
|
@@ -82,7 +88,7 @@ We created [QuantaLogic](https://www.quantalogic.app) because we saw a significa
|
|
82
88
|
## 🌟 Highlights
|
83
89
|
|
84
90
|
- **ReAct Framework**: Advanced implementation combining LLM reasoning with concrete actions
|
85
|
-
- **Universal LLM Support**: Integration with OpenAI, Anthropic, LM Studio, Bedrock, Ollama, DeepSeek V3, via LiteLLM
|
91
|
+
- **Universal LLM Support**: Integration with OpenAI, Anthropic, LM Studio, Bedrock, Ollama, DeepSeek V3, DeepSeek R1, via LiteLLM. Example usage: `quantalogic --model-name deepseek/deepseek-reasoner` or `quantalogic --model-name openrouter/deepseek/deepseek-r1`
|
86
92
|
- **Secure Tool System**: Docker-based code execution and file manipulation tools
|
87
93
|
- **Real-time Monitoring**: Web interface with SSE-based event visualization
|
88
94
|
- **Memory Management**: Intelligent context handling and optimization
|
@@ -5,8 +5,10 @@
|
|
5
5
|
[](https://quantalogic.github.io/quantalogic/)
|
6
6
|
|
7
7
|
|
8
|
+
|
8
9
|
QuantaLogic is a ReAct (Reasoning & Action) framework for building advanced AI agents.
|
9
10
|
|
11
|
+
|
10
12
|
It seamlessly integrates large language models (LLMs) with a robust tool system, enabling agents to understand, reason about, and execute complex tasks through natural language interaction.
|
11
13
|
|
12
14
|
The `cli` version include coding capabilities comparable to Aider.
|
@@ -28,7 +30,7 @@ We created [QuantaLogic](https://www.quantalogic.app) because we saw a significa
|
|
28
30
|
## 🌟 Highlights
|
29
31
|
|
30
32
|
- **ReAct Framework**: Advanced implementation combining LLM reasoning with concrete actions
|
31
|
-
- **Universal LLM Support**: Integration with OpenAI, Anthropic, LM Studio, Bedrock, Ollama, DeepSeek V3, via LiteLLM
|
33
|
+
- **Universal LLM Support**: Integration with OpenAI, Anthropic, LM Studio, Bedrock, Ollama, DeepSeek V3, DeepSeek R1, via LiteLLM. Example usage: `quantalogic --model-name deepseek/deepseek-reasoner` or `quantalogic --model-name openrouter/deepseek/deepseek-r1`
|
32
34
|
- **Secure Tool System**: Docker-based code execution and file manipulation tools
|
33
35
|
- **Real-time Monitoring**: Web interface with SSE-based event visualization
|
34
36
|
- **Memory Management**: Intelligent context handling and optimization
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "quantalogic"
|
3
|
-
version = "0.2.
|
3
|
+
version = "0.2.29"
|
4
4
|
description = "QuantaLogic ReAct Agents"
|
5
5
|
authors = ["Raphaël MANSUY <raphael.mansuy@gmail.com>"]
|
6
6
|
readme = "README.md"
|
@@ -50,6 +50,10 @@ jinja2 = "^3.1.5"
|
|
50
50
|
beautifulsoup4 = "^4.12.3"
|
51
51
|
markdownify = "^0.14.1"
|
52
52
|
requests = "^2.32.3"
|
53
|
+
sqlalchemy = "^2.0.37"
|
54
|
+
python-dotenv = "^1.0.1"
|
55
|
+
networkx = "^3.4.2"
|
56
|
+
faker = "^33.3.1"
|
53
57
|
|
54
58
|
[tool.poetry.scripts]
|
55
59
|
quantalogic = "quantalogic.main:cli"
|
@@ -4,6 +4,7 @@ from quantalogic.tools import (
|
|
4
4
|
DuckDuckGoSearchTool,
|
5
5
|
EditWholeContentTool,
|
6
6
|
ExecuteBashCommandTool,
|
7
|
+
GrepAppTool,
|
7
8
|
InputQuestionTool,
|
8
9
|
JinjaTool,
|
9
10
|
ListDirectoryTool,
|
@@ -75,7 +76,8 @@ def create_coding_agent(
|
|
75
76
|
InputQuestionTool(),
|
76
77
|
DuckDuckGoSearchTool(),
|
77
78
|
JinjaTool(),
|
78
|
-
ReadHTMLTool()
|
79
|
+
ReadHTMLTool(),
|
80
|
+
GrepAppTool()
|
79
81
|
]
|
80
82
|
|
81
83
|
if vision_model_name:
|
@@ -7,6 +7,8 @@ from .duckduckgo_search_tool import DuckDuckGoSearchTool
|
|
7
7
|
from .edit_whole_content_tool import EditWholeContentTool
|
8
8
|
from .elixir_tool import ElixirTool
|
9
9
|
from .execute_bash_command_tool import ExecuteBashCommandTool
|
10
|
+
from .generate_database_report_tool import GenerateDatabaseReportTool
|
11
|
+
from .grep_app_tool import GrepAppTool
|
10
12
|
from .input_question_tool import InputQuestionTool
|
11
13
|
from .jinja_tool import JinjaTool
|
12
14
|
from .list_directory_tool import ListDirectoryTool
|
@@ -22,6 +24,7 @@ from .replace_in_file_tool import ReplaceInFileTool
|
|
22
24
|
from .ripgrep_tool import RipgrepTool
|
23
25
|
from .search_definition_names import SearchDefinitionNames
|
24
26
|
from .serpapi_search_tool import SerpApiSearchTool
|
27
|
+
from .sql_query_tool import SQLQueryTool
|
25
28
|
from .task_complete_tool import TaskCompleteTool
|
26
29
|
from .tool import Tool, ToolArgument
|
27
30
|
from .unified_diff_tool import UnifiedDiffTool
|
@@ -56,5 +59,8 @@ __all__ = [
|
|
56
59
|
"EditWholeContentTool",
|
57
60
|
"JinjaTool",
|
58
61
|
"LLMImageGenerationTool",
|
59
|
-
"ReadHTMLTool"
|
62
|
+
"ReadHTMLTool",
|
63
|
+
"GrepAppTool",
|
64
|
+
"GenerateDatabaseReportTool",
|
65
|
+
'SQLQueryTool'
|
60
66
|
]
|
@@ -0,0 +1,133 @@
|
|
1
|
+
"""Tool for executing bash commands with interactive input support."""
|
2
|
+
|
3
|
+
import os
|
4
|
+
import pty
|
5
|
+
import select
|
6
|
+
import signal
|
7
|
+
import subprocess
|
8
|
+
import sys
|
9
|
+
from typing import Dict, Optional, Union
|
10
|
+
|
11
|
+
from quantalogic.tools.tool import Tool, ToolArgument
|
12
|
+
|
13
|
+
|
14
|
+
class ExecuteBashCommandTool(Tool):
|
15
|
+
"""Tool for executing bash commands with real-time I/O handling."""
|
16
|
+
|
17
|
+
name: str = "execute_bash_tool"
|
18
|
+
description: str = "Executes a bash command and returns its output."
|
19
|
+
need_validation: bool = True
|
20
|
+
arguments: list = [
|
21
|
+
ToolArgument(
|
22
|
+
name="command",
|
23
|
+
arg_type="string",
|
24
|
+
description="The bash command to execute.",
|
25
|
+
required=True,
|
26
|
+
example="ls -la",
|
27
|
+
),
|
28
|
+
ToolArgument(
|
29
|
+
name="working_dir",
|
30
|
+
arg_type="string",
|
31
|
+
description="The working directory where the command will be executed. Defaults to the current directory.",
|
32
|
+
required=False,
|
33
|
+
example="/path/to/directory",
|
34
|
+
),
|
35
|
+
ToolArgument(
|
36
|
+
name="timeout",
|
37
|
+
arg_type="int",
|
38
|
+
description="Maximum time in seconds to wait for the command to complete. Defaults to 60 seconds.",
|
39
|
+
required=False,
|
40
|
+
example="60",
|
41
|
+
),
|
42
|
+
]
|
43
|
+
|
44
|
+
def execute(
|
45
|
+
self,
|
46
|
+
command: str,
|
47
|
+
working_dir: Optional[str] = None,
|
48
|
+
timeout: Union[int, str, None] = 60,
|
49
|
+
env: Optional[Dict[str, str]] = None,
|
50
|
+
) -> str:
|
51
|
+
"""Executes a bash command with interactive input handling."""
|
52
|
+
timeout_seconds = int(timeout) if timeout else 60
|
53
|
+
cwd = working_dir or os.getcwd()
|
54
|
+
env_vars = os.environ.copy()
|
55
|
+
if env:
|
56
|
+
env_vars.update(env)
|
57
|
+
|
58
|
+
try:
|
59
|
+
master, slave = pty.openpty()
|
60
|
+
proc = subprocess.Popen(
|
61
|
+
command,
|
62
|
+
shell=True,
|
63
|
+
stdin=slave,
|
64
|
+
stdout=slave,
|
65
|
+
stderr=subprocess.STDOUT,
|
66
|
+
cwd=cwd,
|
67
|
+
env=env_vars,
|
68
|
+
preexec_fn=os.setsid,
|
69
|
+
close_fds=True,
|
70
|
+
)
|
71
|
+
os.close(slave)
|
72
|
+
|
73
|
+
stdout_buffer = []
|
74
|
+
break_loop = False
|
75
|
+
|
76
|
+
try:
|
77
|
+
while True:
|
78
|
+
rlist, _, _ = select.select([master, sys.stdin], [], [], timeout_seconds)
|
79
|
+
if not rlist:
|
80
|
+
if proc.poll() is not None:
|
81
|
+
break # Process completed but select timed out
|
82
|
+
raise subprocess.TimeoutExpired(command, timeout_seconds)
|
83
|
+
|
84
|
+
for fd in rlist:
|
85
|
+
if fd == master:
|
86
|
+
data = os.read(master, 1024).decode()
|
87
|
+
if not data:
|
88
|
+
break_loop = True
|
89
|
+
break
|
90
|
+
stdout_buffer.append(data)
|
91
|
+
sys.stdout.write(data)
|
92
|
+
sys.stdout.flush()
|
93
|
+
elif fd == sys.stdin:
|
94
|
+
user_input = os.read(sys.stdin.fileno(), 1024)
|
95
|
+
os.write(master, user_input)
|
96
|
+
|
97
|
+
# Check if process completed or EOF received
|
98
|
+
if break_loop or proc.poll() is not None:
|
99
|
+
# Read any remaining output
|
100
|
+
while True:
|
101
|
+
data = os.read(master, 1024).decode()
|
102
|
+
if not data:
|
103
|
+
break
|
104
|
+
stdout_buffer.append(data)
|
105
|
+
sys.stdout.write(data)
|
106
|
+
sys.stdout.flush()
|
107
|
+
break
|
108
|
+
|
109
|
+
except subprocess.TimeoutExpired:
|
110
|
+
os.killpg(os.getpgid(proc.pid), signal.SIGTERM)
|
111
|
+
return f"Command timed out after {timeout_seconds} seconds."
|
112
|
+
except EOFError:
|
113
|
+
pass # Process exited normally
|
114
|
+
finally:
|
115
|
+
os.close(master)
|
116
|
+
proc.wait()
|
117
|
+
|
118
|
+
stdout_content = ''.join(stdout_buffer)
|
119
|
+
return_code = proc.returncode
|
120
|
+
formatted_result = (
|
121
|
+
"<command_output>"
|
122
|
+
f" <stdout>{stdout_content.strip()}</stdout>"
|
123
|
+
f" <returncode>{return_code}</returncode>"
|
124
|
+
f"</command_output>"
|
125
|
+
)
|
126
|
+
return formatted_result
|
127
|
+
except Exception as e:
|
128
|
+
return f"Unexpected error executing command: {str(e)}"
|
129
|
+
|
130
|
+
|
131
|
+
if __name__ == "__main__":
|
132
|
+
tool = ExecuteBashCommandTool()
|
133
|
+
print(tool.to_markdown())
|
@@ -0,0 +1,52 @@
|
|
1
|
+
"""Tool for generating comprehensive database documentation reports."""
|
2
|
+
|
3
|
+
from pydantic import Field, ValidationError
|
4
|
+
|
5
|
+
from quantalogic.tools.tool import Tool
|
6
|
+
from quantalogic.tools.utils.generate_database_report import generate_database_report
|
7
|
+
|
8
|
+
|
9
|
+
class GenerateDatabaseReportTool(Tool):
|
10
|
+
"""Tool for generating database documentation reports from a connection string."""
|
11
|
+
|
12
|
+
name: str = "generate_database_report_tool"
|
13
|
+
description: str = (
|
14
|
+
"Generates a comprehensive Markdown database documentation report with ER diagram. "
|
15
|
+
)
|
16
|
+
arguments: list = [] # No execution arguments - connection string is configured during tool setup
|
17
|
+
connection_string: str = Field(
|
18
|
+
...,
|
19
|
+
description="SQLAlchemy-compatible database connection string (e.g., 'sqlite:///database.db')",
|
20
|
+
example="postgresql://user:password@localhost/mydatabase"
|
21
|
+
)
|
22
|
+
|
23
|
+
def execute(self) -> str:
|
24
|
+
"""Generates a database documentation report using the configured connection string.
|
25
|
+
|
26
|
+
Returns:
|
27
|
+
str: Markdown-formatted database report
|
28
|
+
|
29
|
+
Raises:
|
30
|
+
ValueError: For invalid connection strings or database connection errors
|
31
|
+
RuntimeError: For errors during report generation
|
32
|
+
"""
|
33
|
+
try:
|
34
|
+
return generate_database_report(self.connection_string)
|
35
|
+
except ValidationError as e:
|
36
|
+
raise ValueError(f"Invalid connection configuration: {e}") from e
|
37
|
+
except Exception as e:
|
38
|
+
raise RuntimeError(f"Database report generation failed: {e}") from e
|
39
|
+
|
40
|
+
|
41
|
+
if __name__ == "__main__":
|
42
|
+
|
43
|
+
from quantalogic.tools.utils.create_sample_database import create_sample_database
|
44
|
+
|
45
|
+
# Create and document sample database
|
46
|
+
create_sample_database("sample.db")
|
47
|
+
|
48
|
+
# Example usage
|
49
|
+
tool = GenerateDatabaseReportTool(
|
50
|
+
connection_string="sqlite:///sample.db"
|
51
|
+
)
|
52
|
+
print(tool.execute())
|