Conversation
…omation
**Added:**
- Example environment variable file for agent configuration, including API keys,
data source URLs, and investigation settings - `.env.example`
- Documentation for Grafana MCP integration and advanced log query guides for
investigations - `docs/grafana_mcp_usage.md`
- Detailed Taskfile usage guide for development and production workflows -
`docs/taskfile_usage.md`
- Test script and README for Windows attack indicator queries using Grafana MCP -
`tests/test_grafana_mcp_windows.py` and `tests/README.md`
- Python project lockfile for reproducible builds - `uv.lock`
**Changed:**
- Major rewrite of `README.md` for concise overview, usage, and configuration,
focusing on quick start, key features, and platform integration
- Taskfile expanded with ares-specific tasks, including agent run, investigation,
configuration checks, report management, and MITRE testing
- `pyproject.toml` now describes the actual "ares" project, with correct
dependencies, dev tools, documentation extras, build settings, and CLI entry
point
- Refactored agent, tools, and main entrypoint for:
- Support of enhanced Grafana MCP toolset for log/label/stat discovery
- Defaulting all timestamps to timezone-aware UTC
- Improved evidence and question deduplication logic
- Propagation of Dreadnode platform organization/workspace config
- Taskfile variable-based runtime configuration and secrets loading
- Consistent duration formatting and report timestamps
- Lint/type check and coverage configuration to match new source layout
- Small improvements to error handling and typing in scripts and hooks
**Removed:**
- Old project template metadata from `pyproject.toml`
- Outdated or redundant project setup and poetry config
- Unused error messages and print statements from scripts for cleaner automation output
**Changed:** - Added explicit return type annotations to functions and methods to improve type clarity across `.py` files - Added type annotations for class definitions where relevant, e.g., `# type: ignore[misc]`, to suppress type checker complaints about generic base classes - Added `# type: ignore[untyped-decorator]` to decorator usages (e.g., `@dn.tool_method`, `@pytest.fixture`, `@app.command`) to suppress mypy errors on untyped decorators - Improved typing for pytest fixtures and test functions, specifying return types and argument types - Removed unused imports (e.g., `import sys` in `generate_readme.py`) - Updated `main()` functions to have explicit `-> None` return type and, where appropriate, call `main()` directly instead of `sys.exit(main())` for consistency with new type hints
…ated package
**Added:**
- Introduced `src/core/` package with `create_investigation_agent` factory for agent
instantiation and configuration
- Added modular `src/tools/` package:
- `actions.py` for investigation completion and escalation actions
- `grafana.py` for Grafana and MCP tool integration
- `investigation.py` for state management and question engine tools
- `mitre.py` for MITRE ATT&CK lookup tools
- `observability.py` for Loki and Prometheus query tools
- Added `tests/test_mcp_integration.py` for validating MCP connection and tool
listing
**Changed:**
- Refactored `src/agent.py` to delegate agent creation to `core.create_investigation_agent`
and utilize new toolset imports
- Updated all imports in `src/agent.py`, `src/main.py`, and related modules to use
new `src/tools` and `src/core` structure
- Updated `README.md` and documentation to emphasize MCP-based querying and
service account token usage
- Enhanced docstrings and type annotations across models, engines, mitre, and
report modules for clarity and API discoverability
- Improved agent initialization workflow to prefer MCP tools, fall back gracefully,
and provide clearer logging around tool availability
**Removed:**
- Removed legacy monolithic `src/tools.py`, splitting its logic into specialized
modules under `src/tools/`
- Eliminated direct references to Loki and Prometheus URLs from configuration and
documentation, reflecting the move to MCP-based data source abstraction
CAP-776 Test Ares Agent Integration with Grafana via MCP
Description: Objective: Ensure the Ares agent can reliably connect to Grafana through MCP, query data sources (Loki, Prometheus), and utilize observability data within investigation workflows. Document all findings, issues, and recommendations for future improvements. Scope of Work:
Dependencies:
Acceptance Criteria:
Additional Notes:
|
…thon 3.12 support **Added:** - Added ruff linter configuration for `examples/**/*.py` to allow printing and datetime without timezone in `pyproject.toml` **Changed:** - Changed GitHub Actions CI to test Python 3.10, 3.11, and 3.12 instead of 3.9 - Updated `Taskfile.yaml` to rename the Windows Grafana test task to `ares:example:grafana-windows` and run the script from the `examples` dir - Improved documentation in `README.md`, `docs/topics/grafana-mcp-setup.md`, and updated example commands and explanations for clarity and readability - Updated Markdown tables in `README.md` for consistent formatting - Moved and rewrote `tests/README.md` as `examples/README.md` to describe usage of examples instead of tests **Removed:** - Removed `tests/test_grafana_mcp_windows.py` and replaced with `examples/grafana_mcp_windows_example.py` - Removed references to running Windows Grafana tests from the `tests` directory
**Removed:** - Deleted GitHub Actions workflow that automated PR description updates using rigging and OpenAI API integration (rigging_pr_description.yaml) - Removed automation for generating and posting AI-generated PR summaries on pull request creation
…tion script **Added:** - Added `jinja2` and conditional `tomli` to dev dependencies in `pyproject.toml` for template rendering and toml parsing on Python <3.11 - Added `jinja2` and conditional `tomli` to dev dependencies in `uv.lock` for consistent environment management **Changed:** - Updated `generate_readme.py` to import `tomllib` on Python >=3.11 and fall back to `tomli` for earlier versions, ensuring compatibility - Modified dry-run mode in `generate_readme.py` to print the generated content for better feedback - Adjusted `uv.lock` to pin `exceptiongroup`'s `typing-extensions` dependency only on Python <3.11 for accurate compatibility
…eprecated pytest option **Changed:** - Loosened version constraint for `pytest` by removing the upper bound in both `pyproject.toml` and `uv.lock` to allow future updates without manual changes - Updated `pytest-asyncio` minimum version to `0.24.0` and removed upper bound in both `pyproject.toml` and `uv.lock` for broader compatibility - Removed deprecated `asyncio_default_fixture_loop_scope` option from pytest configuration in `pyproject.toml` to align with newer pytest-asyncio versions and prevent warnings/errors
**Changed:** - Include pytest-asyncio in the list of Python test dependencies installed in the CI workflow to support testing of async code
**Changed:** - Updated the test matrix to include Python 3.13 for CI runs in `.github/workflows/tests.yaml` to ensure compatibility with the latest Python version
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Key Changes:
src/tools/Added:
src/tools/observability.py: Loki and Prometheus tools with detailed docstringssrc/tools/grafana.py: Grafana alerting tools and MCP connection logicsrc/tools/investigation.py: Investigation state management and question enginessrc/tools/mitre.py: MITRE ATT&CK lookup toolssrc/tools/actions.py: Investigation completion and escalation actionssrc/tools/__init__.py: Toolset exports for clean importssrc/core/create.pyandsrc/core/__init__.py: Centralized agent creation logicdocs/taskfile_usage.md: Taskfile command usage and troubleshootingdocs/grafana_mcp_usage.md: Guide for Grafana MCP integration and query patternstests/README.md: Test coverage for MCP and Windows attack queriesChanged:
src/agent.pyto usecreate_investigation_agentfromsrc/core.gitignorefor project-specific directoriespyproject.toml:aresRemoved:
src/tools.pyin favor of modular toolset files