Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
d580756
refactor(evaluators)!: reorganize evaluators into flat folder structure
abhinav-galileo Jan 29, 2026
33ae401
refactor(evaluators): extend EvaluatorConfig from project's BaseModel
abhinav-galileo Jan 29, 2026
2b3713e
test(evaluators): use EvaluatorConfig in test_base.py MockConfig
abhinav-galileo Jan 29, 2026
5fb2f7d
docs: update documentation for evaluator refactoring
abhinav-galileo Jan 29, 2026
49c3206
refactor(evaluators)!: standardize naming conventions and remove lega…
abhinav-galileo Jan 30, 2026
ee4208d
docs: fix typo in CONTRIBUTING.md evaluator example
abhinav-galileo Jan 30, 2026
d00b2e2
chore: sync pyproject.toml versions and metadata across packages
abhinav-galileo Jan 30, 2026
9cc9cbb
refactor(evaluators)!: reorganize into builtin + extra tiers
abhinav-galileo Feb 3, 2026
b5e4e44
fix(ci): add ruff/mypy to galileo dev deps and fix workflow
abhinav-galileo Feb 3, 2026
dc9fa1c
style(galileo): fix import sorting order
abhinav-galileo Feb 3, 2026
3b1a1ed
chore(hooks): add galileo extras to pre-push checks
abhinav-galileo Feb 3, 2026
d8e7025
chore(ci): remove test-extras workflow (covered by pre-push hook)
abhinav-galileo Feb 3, 2026
e6dd371
fix(galileo): fix api_key type annotation for mypy
abhinav-galileo Feb 3, 2026
88b5c57
docs: update evaluator naming from slash to dot notation
abhinav-galileo Feb 3, 2026
32f6f70
fix: SQL evaluator LIMIT/OFFSET bypass and update docs for new packag…
abhinav-galileo Feb 3, 2026
3464063
fix(engine): sync __version__ with pyproject.toml (2.1.0)
abhinav-galileo Feb 3, 2026
3fbd870
refactor: remove __version__ from all packages
abhinav-galileo Feb 4, 2026
2f2ce32
fix(json): include field_constraints and field_patterns in extra-fiel…
abhinav-galileo Feb 4, 2026
3c1eebb
feat(evaluators): add test-extras target for extra evaluator tests
abhinav-galileo Feb 4, 2026
0b68789
feat: add dynamic __version__ to all packages using importlib.metadata
abhinav-galileo Feb 5, 2026
19c71a0
feat(release): publish evaluators and galileo to PyPI
abhinav-galileo Feb 5, 2026
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
9 changes: 9 additions & 0 deletions .githooks/pre-push
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,12 @@ make lint

echo "pre-push: running make typecheck"
make typecheck

# Check extras if they exist and have changes
if [ -d "evaluators/extra/galileo" ]; then
echo "pre-push: checking evaluators/extra/galileo"
cd evaluators/extra/galileo
uv run --extra dev ruff check --config ../../../pyproject.toml src/
uv run --extra dev mypy --config-file ../../../pyproject.toml src/
cd "$REPO_ROOT"
fi
19 changes: 19 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ jobs:
uv sync
uv run python scripts/build.py all

# Publish in dependency order: models -> evaluators -> sdk -> evaluator-galileo
- name: Publish agent-control-models to PyPI
if: steps.release.outputs.released == 'true'
uses: pypa/gh-action-pypi-publish@release/v1
Expand All @@ -50,6 +51,14 @@ jobs:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}

- name: Publish agent-control-evaluators to PyPI
if: steps.release.outputs.released == 'true'
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: evaluators/builtin/dist/
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}

- name: Publish agent-control-sdk to PyPI
if: steps.release.outputs.released == 'true'
uses: pypa/gh-action-pypi-publish@release/v1
Expand All @@ -58,6 +67,14 @@ jobs:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}

- name: Publish agent-control-evaluator-galileo to PyPI
if: steps.release.outputs.released == 'true'
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: evaluators/extra/galileo/dist/
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}

- name: Upload to GitHub Release
if: steps.release.outputs.released == 'true'
uses: python-semantic-release/upload-to-gh-release@main
Expand All @@ -67,5 +84,7 @@ jobs:
root_options: "-vv"
dist_glob: |
models/dist/*
evaluators/builtin/dist/*
sdks/python/dist/*
server/dist/*
evaluators/extra/galileo/dist/*
19 changes: 13 additions & 6 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ Forwarded targets:
- `engine/`: **control evaluation engine and evaluator system** — all evaluation logic, evaluator discovery, and evaluator orchestration lives here (`engine/src/agent_control_engine/`)
- `server/`: FastAPI server (`server/src/agent_control_server/`)
- `sdks/python/`: Python SDK — uses engine for evaluation (`sdks/python/src/agent_control/`)
- `evaluators/`: evaluator implementations (`evaluators/src/agent_control_evaluators/`)
- `evaluators/builtin/`: builtin evaluator implementations (`evaluators/builtin/src/agent_control_evaluators/`)
- `evaluators/extra/`: optional evaluator packages (e.g., `evaluators/extra/galileo/`)
- `ui/`: Nextjs based web app to manage agent controls
- `examples/`: runnable examples (ruff has relaxed import rules here)

Expand Down Expand Up @@ -66,13 +67,19 @@ All testing guidance (including “behavior changes require tests”) lives in `
4) add SDK wrapper in `sdks/python/src/agent_control/`
5) add tests (server + SDK) and update docs/examples if user-facing

- Add a new evaluator:
1) implement evaluator class extending `Evaluator` in `evaluators/src/agent_control_evaluators/`
2) use `@register_evaluator` decorator (from `agent_control_models`)
3) add entry point in `evaluators/pyproject.toml` for auto-discovery
4) add tests in the evaluators package
- Add a new builtin evaluator:
1) implement evaluator class extending `Evaluator` in `evaluators/builtin/src/agent_control_evaluators/`
2) use `@register_evaluator` decorator (from `agent_control_evaluators`)
3) add entry point in `evaluators/builtin/pyproject.toml` for auto-discovery
4) add tests in the evaluators/builtin package
5) evaluator is automatically available to server and SDK via `discover_evaluators()`

- Add an external evaluator package:
1) copy `evaluators/extra/template/` as a starting point
2) implement evaluator class extending `Evaluator` from `agent_control_evaluators`
3) add entry point using `org.name` format (e.g., `galileo.luna2`)
4) package is discovered automatically when installed alongside agent-control

## Git/PR workflow

- Branch naming: `feature/...`, `fix/...`, `refactor/...`
Expand Down
Loading
Loading