Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
bc5e250
Feat/addstools (#109)
Josephrp Oct 12, 2025
ee379fe
Merge branch 'dev' into perf/codecovtrigger
Josephrp Oct 12, 2025
e54e8c5
Perf/codecovtrigger (#143)
Josephrp Oct 12, 2025
41f1326
Merge remote-tracking branch 'hf/perf/codecovtrigger' into perf/codec…
Josephrp Oct 12, 2025
9a718b0
Merge branch 'dev' into perf/codecovtrigger
Josephrp Oct 12, 2025
52d6b11
adds deepcritical/deepcritical repository slug
Josephrp Oct 13, 2025
11fa66e
Merge branch 'perf/codecovtrigger' of https://github.com/DeepCritical…
Josephrp Oct 13, 2025
c7cbb27
Perf/codecovtrigger (#144)
Josephrp Oct 13, 2025
f026211
attempts codecov trigger
Josephrp Oct 13, 2025
54d1fe6
Merge branch 'dev' into perf/codecovtrigger
Josephrp Oct 13, 2025
576db47
Perf/codecovtrigger (#145)
Josephrp Oct 13, 2025
f93293c
attempts codecov trigger
Josephrp Oct 13, 2025
fcb1aa3
Merge branch 'perf/codecovtrigger' of https://github.com/DeepCritical…
Josephrp Oct 13, 2025
313cca6
Merge branch 'dev' into perf/codecovtrigger
Josephrp Oct 13, 2025
9803642
Perf/codecovtrigger (#146)
Josephrp Oct 13, 2025
710dbd0
attempts codecov trigger
Josephrp Oct 13, 2025
885c228
Merge branch 'perf/codecovtrigger' of https://github.com/DeepCritical…
Josephrp Oct 13, 2025
e25ffb8
Merge branch 'dev' into perf/codecovtrigger
Josephrp Oct 13, 2025
4cdbd8b
Perf/codecovtrigger (#147)
Josephrp Oct 13, 2025
bc56a95
adds codecov cli method
Josephrp Oct 13, 2025
e476567
Merge branch 'dev' into feat/addstools
Josephrp Oct 13, 2025
6eb8fb7
Feat/addstools (#148)
Josephrp Oct 13, 2025
01e1442
adds codecov components and upload
Josephrp Oct 13, 2025
e84e50e
merge branch codecov and addtools
Josephrp Oct 13, 2025
0da49fc
Merge branch 'perf/codecovtrigger' of https://github.com/DeepCritical…
Josephrp Oct 13, 2025
0609151
Merge branch 'dev' into perf/codecovtrigger
Josephrp Oct 13, 2025
0c28de5
Perf/codecovtrigger (#149)
Josephrp Oct 13, 2025
75aec39
Update README.md
Josephrp Oct 13, 2025
67f52c3
Update README.md
Josephrp Oct 13, 2025
534a7c5
remove --verbose from ci
Josephrp Oct 13, 2025
1458ad2
Merge branch 'perf/codecovtrigger' of https://github.com/DeepCritical…
Josephrp Oct 13, 2025
7eed719
Merge branch 'dev' into perf/codecovtrigger
Josephrp Oct 13, 2025
f01896f
fix typo
Josephrp Oct 13, 2025
e656750
Merge branch 'perf/codecovtrigger' of https://github.com/DeepCritical…
Josephrp Oct 13, 2025
d9c529c
fix permissions
Josephrp Oct 13, 2025
c3014a4
Perf/codecovtrigger (#150)
Josephrp Oct 13, 2025
1964f45
attempts ci fix using junit and logging
Josephrp Oct 13, 2025
fe930ce
Merge branch 'dev' into perf/codecovtrigger
Josephrp Oct 13, 2025
5933bd8
Perf/codecovtrigger (#151)
Josephrp Oct 13, 2025
5be690c
attempts ci fix for upload
Josephrp Oct 13, 2025
b2e3c82
Merge branch 'perf/codecovtrigger' of https://github.com/DeepCritical…
Josephrp Oct 13, 2025
ca3565a
Perf/codecovtrigger (#152)
Josephrp Oct 13, 2025
0e9c3b6
attempts ci fix for upload
Josephrp Oct 13, 2025
e5c4083
Merge branch 'dev' into perf/codecovtrigger
Josephrp Oct 13, 2025
474bd79
Perf/codecovtrigger (#153)
Josephrp Oct 13, 2025
12272dd
fix: remove invalid pytest junit options
Josephrp Oct 13, 2025
40b2b4d
Merge branch 'perf/codecovtrigger' of https://github.com/DeepCritical…
Josephrp Oct 13, 2025
85db369
Merge branch 'dev' into perf/codecovtrigger
Josephrp Oct 13, 2025
c0beee0
Perf/codecovtrigger (#154)
Josephrp Oct 13, 2025
5ca5004
attempts ci fix n785
Josephrp Oct 13, 2025
8ef4d0f
Merge branch 'perf/codecovtrigger' of https://github.com/DeepCritical…
Josephrp Oct 13, 2025
924ca9e
Merge branch 'dev' into perf/codecovtrigger
Josephrp Oct 13, 2025
06857c1
Perf/codecovtrigger (#155)
Josephrp Oct 13, 2025
ad45fb4
attempts ci fix n786
Josephrp Oct 13, 2025
94f396b
Merge branch 'perf/codecovtrigger' of https://github.com/DeepCritical…
Josephrp Oct 13, 2025
4e89809
Merge branch 'dev' into perf/codecovtrigger
Josephrp Oct 13, 2025
ac7e183
Perf/codecovtrigger (#156)
Josephrp Oct 13, 2025
3d453d8
attempts ci fix n787
Josephrp Oct 13, 2025
903224b
Merge branch 'perf/codecovtrigger' of https://github.com/DeepCritical…
Josephrp Oct 13, 2025
63dda21
Merge branch 'dev' into perf/codecovtrigger
Josephrp Oct 13, 2025
deab566
attempts ci fix n788
Josephrp Oct 13, 2025
365fd3a
Merge branch 'perf/codecovtrigger' of https://github.com/DeepCritical…
Josephrp Oct 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 90 additions & 10 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: CI
permissions:
contents: read
contents: write

on:
push:
Expand Down Expand Up @@ -35,43 +35,123 @@ jobs:
# For dev branch: exclude optional tests (docker, llm, performance, pydantic_ai)
if [ "${{ github.ref }}" = "refs/heads/main" ]; then
echo "Running all tests including optional tests for main branch"
pytest tests/ --cov=DeepResearch --cov-report=xml --cov-report=term-missing --junitxml=junit.xml -o junit_family=legacy
pytest tests/ -m "not containerized" --cov=DeepResearch --cov-report=xml --cov-report=term-missing --junitxml=junit.xml -o junit_family=legacy
else
echo "Running tests excluding optional tests for dev branch"
pytest tests/ -m "not optional and not containerized" --cov=DeepResearch --cov-report=xml --cov-report=term-missing --junitxml=junit.xml -o junit_family=legacy
fi

- name: Run bioinformatics unit tests (all branches)
run: |
echo "🧬 Running bioinformatics unit tests..."
echo "Running bioinformatics unit tests..."
pytest tests/test_bioinformatics_tools/ -m "not containerized" --cov=DeepResearch --cov-append --cov-report=xml --cov-report=term-missing --junitxml=junit-bioinformatics.xml -o junit_family=legacy

- name: Run bioinformatics containerized tests (main branch only)
if: github.ref == 'refs/heads/docker'
run: |
echo "🐳 Running bioinformatics containerized tests..."
echo "Running bioinformatics containerized tests..."
# Check if Docker is available and bioinformatics images exist
if docker --version >/dev/null 2>&1; then
make test-bioinformatics-containerized || echo "⚠️ Containerized tests failed, but continuing..."
make test-bioinformatics-containerized || echo "Containerized tests failed, but continuing..."
else
echo "⚠️ Docker not available, skipping containerized tests"
echo "Docker not available, skipping containerized tests"
fi

- name: Debug coverage files
run: |
echo "Checking for coverage files..."
ls -la coverage.xml junit.xml junit-bioinformatics.xml || echo "Some files missing"
head -20 coverage.xml || echo "Coverage file not readable"

# Codecov upload steps - These steps will NOT fail the CI even if uploads fail
# Tests will pass regardless of Codecov upload status
- name: Configure Codecov repository setup
run: |
# Check if CODECOV_TOKEN is available and set HAS_CODECOV_TOKEN flag
if [ -n "${CODECOV_TOKEN}" ]; then
echo "📊 Codecov token found - uploads will be enabled"
echo "🔗 Repository: ${{ github.repository }}"
echo "📈 Coverage reports will be uploaded to Codecov"
echo "✅ Codecov uploads enabled for this run"
echo "HAS_CODECOV_TOKEN=true" >> $GITHUB_ENV
else
echo "⚠️ CODECOV_TOKEN not found - uploads will be skipped"
echo "💡 To enable Codecov uploads:"
echo " 1. Go to https://codecov.io/gh/${{ github.repository }}/settings"
echo " 2. Generate a repository upload token"
echo " 3. Add it as CODECOV_TOKEN secret in repository settings"
echo " 4. Repository will be auto-detected on first upload"
echo "HAS_CODECOV_TOKEN=false" >> $GITHUB_ENV
fi
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

- name: Display coverage summary
run: |
echo "📈 Local Coverage Summary:"
echo "=========================="
if command -v coverage >/dev/null 2>&1; then
python -m coverage report --include="DeepResearch/*" --omit="*/tests/*,*/test_*" || echo "Coverage report generation failed"
else
echo "Coverage.py not available for summary"
fi
echo ""
echo "📁 Coverage files generated:"
ls -lh *.xml 2>/dev/null || echo "No XML coverage files found"
echo ""
echo "💡 To view detailed coverage: python -m coverage html && open htmlcov/index.html"

- name: Upload coverage to Codecov
if: env.HAS_CODECOV_TOKEN == 'true'
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
slug: Josephrp/DeepCritical
files: ./coverage.xml
fail_ci_if_error: true
fail_ci_if_error: false
verbose: true
slug: ${{ github.repository }}
name: "${{ github.ref_name }} - Python ${{ matrix.python-version || '3.11' }}"
continue-on-error: true

- name: Upload test results to Codecov
if: ${{ !cancelled() }}
if: env.HAS_CODECOV_TOKEN == 'true' && !cancelled()
uses: codecov/test-results-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
slug: Josephrp/DeepCritical
files: ./junit.xml
verbose: true
slug: ${{ github.repository }}
continue-on-error: true

- name: Upload bioinformatics test results to Codecov
if: env.HAS_CODECOV_TOKEN == 'true' && !cancelled()
uses: codecov/test-results-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./junit-bioinformatics.xml
verbose: true
slug: ${{ github.repository }}
continue-on-error: true

- name: Codecov upload summary
if: env.HAS_CODECOV_TOKEN == 'false'
run: |
echo "ℹ️ Codecov uploads were skipped because CODECOV_TOKEN is not configured"
echo ""
echo "📋 Setup Instructions:"
echo "======================"
echo "1. Visit: https://codecov.io/gh/${{ github.repository }}"
echo "2. Sign in with GitHub"
echo "3. Repository should auto-appear"
echo "4. Go to Settings → Repository Upload Token"
echo "5. Generate and copy the token"
echo "6. Go to GitHub repo Settings → Secrets and variables → Actions"
echo "7. Add new repository secret: CODECOV_TOKEN"
echo "8. Paste the token value"
echo "9. Codecov uploads will work on next run"
echo ""
echo "✅ CI will pass regardless of Codecov upload status"
echo "📊 Coverage reports were still generated locally for inspection"

- name: Run VLLM tests (optional, manual trigger only)
if: github.event_name == 'workflow_dispatch' || contains(github.event.head_commit.message, '[vllm-tests]')
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/test-enhanced.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,11 +55,13 @@ jobs:
run: make test-performance

- name: Upload coverage reports
uses: codecov/codecov-action@v3
uses: codecov/codecov-action@v5
if: matrix.python-version == '3.11'
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: ./coverage.xml
fail_ci_if_error: false
slug: ${{ github.repository }}

- name: Upload test artifacts
uses: actions/upload-artifact@v4
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/test-optional.yml
Original file line number Diff line number Diff line change
Expand Up @@ -98,9 +98,10 @@ jobs:

- name: Upload coverage to Codecov (optional tests)
if: always()
uses: codecov/codecov-action@v4
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./coverage.xml
fail_ci_if_error: false
verbose: true
slug: ${{ github.repository }}
32 changes: 30 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# 🚀 DeepCritical: Building a Highly Configurable Deep Research Agent Ecosystem

[![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)][![(https://deepcritical.github.io/DeepCritical)]
https://codecov.io/gh/DeepCritical/DeepCritical/branch/dev/graph/badge.svg?token=N8H1DOUXQL]
[![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)](https://deepcritical.github.io/DeepCritical)
[![codecov](https://codecov.io/gh/DeepCritical/DeepCritical/branch/dev/graph/badge.svg)](https://codecov.io/gh/DeepCritical/DeepCritical)

## Vision: From Single Questions to Research Field Generation

Expand Down Expand Up @@ -618,6 +618,34 @@ Prompt templates in `configs/prompts/`:

## 🔧 Development

### Development

### Codecov Setup

To enable coverage reporting with Codecov:

1. **Set up the repository in Codecov:**
- Visit [https://app.codecov.io/gh/DeepCritical/DeepCritical](https://app.codecov.io/gh/DeepCritical/DeepCritical)
- Click "Add new repository" or "Setup repo" if prompted
- Follow the setup wizard to connect your GitHub repository

2. **Generate a Codecov token:**
- In Codecov, go to your repository settings
- Navigate to "Repository Settings" > "Tokens"
- Generate a new token with "upload" permissions

3. **Add the token as a GitHub secret:**
- In your GitHub repository, go to Settings > Secrets and variables > Actions
- Click "New repository secret"
- Name: `CODECOV_TOKEN`
- Value: Your Codecov token from step 2

4. **Verify setup:**
- Push a commit to trigger the CI pipeline
- Check that coverage reports appear in Codecov

The CI workflow will automatically upload coverage reports once the repository is configured in Codecov and the token is added as a secret.

### Development with uv

```bash
Expand Down
160 changes: 159 additions & 1 deletion codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,167 @@ coverage:
threshold: 1%

comment:
layout: "reach,diff,flags,tree"
layout: "condensed_header, condensed_files, condensed_footer"
behavior: default
require_changes: false
hide_project_coverage: true

component_management:
default_rules:
statuses:
- type: project
target: auto
threshold: 1%
branches:
- "!main"
individual_components:
# Core Architecture Components
- component_id: core_app
name: Core Application
paths:
- DeepResearch/app.py
- DeepResearch/__init__.py

- component_id: agents
name: Agents
paths:
- DeepResearch/agents.py
- DeepResearch/src/agents/**

- component_id: datatypes
name: Data Types
paths:
- DeepResearch/src/datatypes/**

- component_id: tools
name: Tools
paths:
- DeepResearch/tools/**
- DeepResearch/src/tools/**

- component_id: statemachines
name: State Machines
paths:
- DeepResearch/src/statemachines/**
- configs/statemachines/**

- component_id: utils
name: Utilities
paths:
- DeepResearch/src/utils/**

- component_id: models
name: Models
paths:
- DeepResearch/src/models/**

- component_id: prompts
name: Prompts
paths:
- DeepResearch/src/prompts/**
- configs/prompts/**

- component_id: workflow_patterns
name: Workflow Patterns
paths:
- DeepResearch/src/workflow_patterns.py
- DeepResearch/examples/workflow_patterns_demo.py

# Specialized Components
- component_id: bioinformatics
name: Bioinformatics
paths:
- DeepResearch/src/tools/bioinformatics/**
- DeepResearch/src/agents/bioinformatics_agents.py
- DeepResearch/src/datatypes/bioinformatics*.py
- DeepResearch/src/prompts/bioinformatics*.py
- DeepResearch/src/statemachines/bioinformatics_workflow.py
- configs/bioinformatics/**
- tests/test_bioinformatics_tools/**
- docker/bioinformatics/**

- component_id: deep_agent
name: Deep Agent
paths:
- DeepResearch/src/agents/deep_agent*.py
- DeepResearch/src/datatypes/deep_agent*.py
- DeepResearch/src/prompts/deep_agent*.py
- DeepResearch/src/statemachines/deep_agent*.py
- DeepResearch/src/tools/deep_agent*.py
- configs/deep_agent/**

- component_id: rag
name: RAG
paths:
- DeepResearch/src/agents/rag_agent.py
- DeepResearch/src/datatypes/rag.py
- DeepResearch/src/prompts/rag.py
- DeepResearch/src/statemachines/rag_workflow.py
- configs/rag/**

- component_id: vllm
name: VLLM Integration
paths:
- DeepResearch/src/agents/vllm_agent.py
- DeepResearch/src/datatypes/vllm*.py
- DeepResearch/src/prompts/vllm_agent.py
- configs/vllm/**
- tests/test_llm_framework/**
- tests/test_prompts_vllm/**
- test_artifacts/vllm_tests/**

- component_id: deepsearch
name: Deep Search
paths:
- DeepResearch/src/tools/deepsearch*.py
- DeepResearch/src/statemachines/deepsearch_workflow.py
- configs/deepsearch/**

# Test Components
- component_id: test_bioinformatics
name: Bioinformatics Tests
paths:
- tests/test_bioinformatics_tools/**

- component_id: test_vllm
name: VLLM Tests
paths:
- tests/test_llm_framework/**
- tests/test_prompts_vllm/**

- component_id: test_pydantic_ai
name: Pydantic AI Tests
paths:
- tests/test_pydantic_ai/**

- component_id: test_docker_sandbox
name: Docker Sandbox Tests
paths:
- tests/test_docker_sandbox/**

- component_id: test_core
name: Core Tests
paths:
- tests/test_*.py

# Configuration and Documentation
- component_id: configuration
name: Configuration
paths:
- configs/**
- pyproject.toml
- codecov.yml

- component_id: scripts
name: Scripts
paths:
- DeepResearch/scripts/**
- scripts/**

- component_id: docker
name: Docker
paths:
- docker/**

github_checks:
annotations: true