Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
6465572
feat!: implement recursive control condition trees
lan17 Mar 12, 2026
46bee1d
Merge remote-tracking branch 'origin/main' into codex/feature/sc-5842…
lan17 Mar 12, 2026
5aaca0f
fix: address UI lint and SDK CI defaults
lan17 Mar 12, 2026
b4ece0c
fix: format UI sources for prettier CI
lan17 Mar 12, 2026
7b51b4e
fix: use theme-aware condition tree surface
lan17 Mar 12, 2026
d7434d4
fix: stabilize nested evaluator switching
lan17 Mar 12, 2026
479f56d
chore: run server via module entrypoint
lan17 Mar 12, 2026
3f56254
fix: restore leaf-only control editor
lan17 Mar 12, 2026
bbe72a1
test: add python coverage for condition trees
lan17 Mar 12, 2026
a0d4391
chore: drop manual version bumps
lan17 Mar 12, 2026
cb839c3
chore: drop sdk test server dev dependency
lan17 Mar 12, 2026
faa6d8e
fix: sanitize condition trace errors
lan17 Mar 12, 2026
3056199
fix: canonicalize legacy control payloads
lan17 Mar 12, 2026
3604819
test: add condition tree coverage
lan17 Mar 12, 2026
9dd5ad9
fix(sdk-ts): sync generated sdk metadata
lan17 Mar 12, 2026
7150ee3
test: cover condition rollout paths
lan17 Mar 12, 2026
9edd391
fix: capture unexpected condition evaluation errors
lan17 Mar 12, 2026
1a23782
refactor: simplify condition tree helpers
lan17 Mar 12, 2026
29ffe61
fix(examples): refresh control setup payloads
lan17 Mar 12, 2026
3d4888d
docs: update condition tree examples
lan17 Mar 12, 2026
d87cd06
fix: preserve composite observability identity
lan17 Mar 14, 2026
1026a10
fix: restore condition-tree compatibility
lan17 Mar 14, 2026
d51dca5
Merge origin/main into codex/feature/sc-58429-condition-trees
lan17 Mar 14, 2026
c676e20
fix: resolve ci failures for condition trees
lan17 Mar 14, 2026
8446775
fix(server): dedupe overwrite evaluator references
lan17 Mar 16, 2026
fdeb6cb
Merge origin/main into codex/feature/sc-58429-condition-trees
lan17 Mar 16, 2026
2fad705
fix: stabilize make check environment
lan17 Mar 16, 2026
e7f9261
Revert "fix: stabilize make check environment"
lan17 Mar 16, 2026
5b91740
Merge branch 'main' of github.com:agentcontrol/agent-control into cod…
lan17 Mar 16, 2026
954aecc
Merge origin/main
lan17 Mar 16, 2026
6da680b
fix: simplify makefile merge resolution
lan17 Mar 16, 2026
a11af51
fix(sdk-ts): regenerate validation error model
lan17 Mar 16, 2026
ba25cb9
Merge remote-tracking branch 'origin/main' into codex/feature/sc-5842…
lan17 Mar 16, 2026
6de979f
fix(sdk-ts): sync generated metadata for v6.8.1
lan17 Mar 16, 2026
c88f90e
fix(sdk-ts): restore validation error fields
lan17 Mar 16, 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
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ jobs:
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
files: coverage-engine.xml,coverage-server.xml,coverage-sdk.xml
files: coverage-models.xml,coverage-engine.xml,coverage-server.xml,coverage-sdk.xml
fail_ci_if_error: false
token: ${{ secrets.CODECOV_TOKEN }}

Expand Down
12 changes: 9 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.PHONY: help sync openapi-spec openapi-spec-check test test-extras test-all test-models test-sdk lint lint-fix typecheck check build build-models build-server build-sdk publish publish-models publish-server publish-sdk hooks-install hooks-uninstall prepush evaluators-test evaluators-lint evaluators-lint-fix evaluators-typecheck evaluators-build galileo-test galileo-lint galileo-lint-fix galileo-typecheck galileo-build sdk-ts-generate sdk-ts-overlay-test sdk-ts-name-check sdk-ts-generate-check sdk-ts-build sdk-ts-test sdk-ts-lint sdk-ts-typecheck sdk-ts-release-check sdk-ts-publish-dry-run sdk-ts-publish
.PHONY: help sync openapi-spec openapi-spec-check test test-extras test-all models-test test-models test-sdk lint lint-fix typecheck check build build-models build-server build-sdk publish publish-models publish-server publish-sdk hooks-install hooks-uninstall prepush evaluators-test evaluators-lint evaluators-lint-fix evaluators-typecheck evaluators-build galileo-test galileo-lint galileo-lint-fix galileo-typecheck galileo-build sdk-ts-generate sdk-ts-overlay-test sdk-ts-name-check sdk-ts-generate-check sdk-ts-build sdk-ts-test sdk-ts-lint sdk-ts-typecheck sdk-ts-release-check sdk-ts-publish-dry-run sdk-ts-publish

# Workspace package names
PACK_MODELS := agent-control-models
Expand Down Expand Up @@ -31,7 +31,8 @@ help:
@echo " make openapi-spec-check - verify OpenAPI generation succeeds"
@echo ""
@echo "Test:"
@echo " make test - run tests for core packages (server, engine, sdk, evaluators)"
@echo " make test - run tests for core packages (models, server, engine, sdk, evaluators)"
@echo " make models-test - run shared model tests with coverage"
@echo " make test-extras - run tests for contrib evaluators (galileo, etc.)"
@echo " make test-all - run all tests (core + extras)"
@echo " make sdk-ts-test - run TypeScript SDK tests"
Expand Down Expand Up @@ -81,7 +82,12 @@ openapi-spec-check: openapi-spec
# Test
# ---------------------------

test: server-test engine-test sdk-test evaluators-test
test: models-test server-test engine-test sdk-test evaluators-test

models-test:
cd $(MODELS_DIR) && uv run pytest --cov=src --cov-report=xml:../coverage-models.xml -q

test-models: models-test

# Run tests for contrib evaluators (not included in default test target)
test-extras: galileo-test
Expand Down
12 changes: 8 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -160,10 +160,12 @@ async def setup():
"enabled": True,
"execution": "server",
"scope": {"stages": ["post"]},
"selector": {"path": "output"},
"evaluator": {
"name": "regex",
"config": {"pattern": r"\b\d{3}-\d{2}-\d{4}\b"},
"condition": {
"selector": {"path": "output"},
"evaluator": {
"name": "regex",
"config": {"pattern": r"\b\d{3}-\d{2}-\d{4}\b"},
},
},
"action": {"decision": "deny"},
},
Expand All @@ -182,6 +184,8 @@ async def setup():
asyncio.run(setup())
```

Controls now store leaf `selector` and `evaluator` definitions under `condition`, which also enables composite `and`, `or`, and `not` trees.

**Tip**: If you prefer a visual flow, use the UI instead - see the [UI Quickstart](https://docs.agentcontrol.dev/core/ui-quickstart).

Run both scripts in order:
Expand Down
Loading
Loading