Uh oh!
There was an error while loading. Please reload this page.
feat(server)!: implement recursive control condition trees - #115
Conversation
…9-condition-trees # Conflicts: # ui/src/core/page-components/agent-detail/modals/edit-control/edit-control-content.tsx
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
namrataghadi-galileo
commented
Mar 13, 2026
flowchart TD
C["condition (root)"] --> A["and"]
C --> O["or"]
C --> N["not"]
A --> L1["leaf: selector + evaluator"]
A --> L2["leaf: selector + evaluator"]
O --> L3["leaf: selector + evaluator"]
O --> A2["and"]
A2 --> L4["leaf: selector + evaluator"]
A2 --> L5["leaf: selector + evaluator"]
N --> L6["leaf: selector + evaluator"]
|
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
namrataghadi-galileo
commented
Mar 13, 2026
One suggestion from Observability perspective: |
lan17
commented
Mar 14, 2026
Following up on the broader observability note: I aligned server and SDK event emission so composite conditions use a deterministic representative leaf for top-level |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
This reverts commit 2fad705.
…ex/feature/sc-58429-condition-trees
…9-condition-trees # Conflicts: # server/tests/test_controls_validation.py
Uh oh!
There was an error while loading. Please reload this page.
## [2.0.0](ts-sdk-v1.1.0...ts-sdk-v2.0.0) (2026-03-18) ### ⚠ BREAKING CHANGES * **server:** implement recursive control condition trees (#115) ### Features * **docs:** simplify main README quick start v2 ([#100](#100)) ([7701c65](7701c65)) * **docs:** Update README.md to accurately mention Strands Agents SDK ([#105](#105)) ([84dfa57](84dfa57)) * **evaluators:** add Cisco AI Defense evaluator and examples ([#60](#60)) ([52e2416](52e2416)) * **sdk:** add Google ADK framework integration ([#83](#83)) ([f2b53ee](f2b53ee)) * **server:** implement recursive control condition trees ([#115](#115)) ([2ff4c12](2ff4c12)) ### Bug Fixes * **docs:** clarify README quickstart flow ([#119](#119)) ([317c626](317c626)) * **docs:** cleanup readme ([#66](#66)) ([eca0d6b](eca0d6b)) * **docs:** promote Google ADK plugin in README ([#99](#99)) ([f038aa4](f038aa4)) * **evaluators:** address Cisco AI Defense review issues ([#103](#103)) ([81da81b](81da81b)) * **examples:** shut down SDK in short-lived demos ([#85](#85)) ([df43264](df43264)) * **sdk:** fail closed on post-hook evaluation errors ([#114](#114)) ([67f8fc1](67f8fc1)), closes [#112](#112) * **sdk:** skip evaluation when no controls apply ([#124](#124)) ([d2cd9f9](d2cd9f9)) * **server:** escape ILIKE pattern in evaluator-configs list endpoint ([#108](#108)) ([cb6e89f](cb6e89f)) * **server:** reject empty string list evaluator values ([#121](#121)) ([2c55d27](2c55d27)) * **server:** revert unwanted changes in server config ([#117](#117)) ([d92e168](d92e168)) * **ui:** create flow - name trimming issue ([#93](#93)) ([1a9759d](1a9759d))
galileo-automation
commented
Mar 18, 2026
🎉 This PR is included in version 2.0.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
corresponding docs update: agentcontrol/docs-agent-control#28
Summary
conditiontrees across the shared models, engine, server, SDKs, and UI contractscondition_tracemetadata for composite evaluationScope
ControlDefinitionnow uses a top-levelconditiontree instead of top-levelselector/evaluatorand/or/notcomposition with a hard API depth limit of6/api/v1route structure stays the same, but the canonical contract is a breaking change for SDK consumers that construct control payloads directlycondition-tree input contractmetadata.condition_tracematched: nullon error) and preserved raw diagnostics for internal observability while API responses stay sanitizedselector+evaluator) intoconditionduring rollout9f2f5a4e6c1b_normalize_legacy_control_conditionsRisk and Rollout
alembic upgrade headTesting
make checkmake checkpassed, which covered:make models-testmake server-testmake engine-testmake sdk-testmake evaluators-testAdditional focused coverage added in this PR includes:
conditiontrees and legacy canonicalizationNotes:
sqlglot[rs]deprecation, Strands resource/deprecation warnings), but the targets passed cleanlyChecklist