Skip to content

Commit d532300

Browse files
resolve conflicst
2 parents f0391db + 439150f commit d532300

50 files changed

Lines changed: 1076 additions & 3111 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎CHANGELOG.md‎

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,33 @@
22

33
<!-- version list -->
44

5+
## v7.3.0 (2026-03-30)
6+
7+
### Bug Fixes
8+
9+
- **docs**: Add explicit shutdown to quickstart example
10+
([#149](https://github.com/agentcontrol/agent-control/pull/149),
11+
[`b76014f`](https://github.com/agentcontrol/agent-control/commit/b76014f1132218448b93169b3c6350f62bac49ac))
12+
13+
- **sdk**: Use sync shutdown flush fallback
14+
([#150](https://github.com/agentcontrol/agent-control/pull/150),
15+
[`90265ba`](https://github.com/agentcontrol/agent-control/commit/90265ba79132d8a8669f92948cf73568eb38fd5a))
16+
17+
- **server**: Remove unused evaluator config store
18+
([#152](https://github.com/agentcontrol/agent-control/pull/152),
19+
[`dea2873`](https://github.com/agentcontrol/agent-control/commit/dea2873241004c9398909609d4b665808270290e))
20+
21+
### Features
22+
23+
- **evaluators**: Add starts_with/ends_with mode to list evaluator
24+
([#154](https://github.com/agentcontrol/agent-control/pull/154),
25+
[`bf1f7d7`](https://github.com/agentcontrol/agent-control/commit/bf1f7d7cf271a231a165699d44f726467b49bd50))
26+
27+
- **sdk**: [Enterprise Integration]: Add provider agnostic traceing
28+
([#145](https://github.com/agentcontrol/agent-control/pull/145),
29+
[`f1ca27c`](https://github.com/agentcontrol/agent-control/commit/f1ca27ccac5f6666f997c876598ef1bcbbae0b6d))
30+
31+
532
## v7.2.0 (2026-03-26)
633

734
### Bug Fixes

‎engine/pyproject.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "agent-control-engine"
3-
version = "7.2.0"
3+
version = "7.3.0"
44
description = "Control execution engine for Agent Control"
55
requires-python = ">=3.12"
66
dependencies = [

‎evaluators/README.md‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,14 @@ Pattern matching for text (PII, keywords, SQL injection)
1919
```
2020

2121
### List
22-
Match against value lists (blocked users, restricted cities)
22+
Match against value lists (blocked users, restricted cities, allowed prefixes).
23+
Supports `match_mode: "exact"` for full-string membership, `match_mode: "contains"`
24+
for keyword-style matching, `match_mode: "starts_with"` for prefix matching, and
25+
`match_mode: "ends_with"` for suffix matching.
2326
```python
2427
{"name": "list", "config": {"values": ["admin", "root"], "case_sensitive": False}}
28+
{"name": "list", "config": {"values": ["/home/lev/agent-control"], "match_mode": "starts_with"}}
29+
{"name": "list", "config": {"values": [".md"], "match_mode": "ends_with"}}
2530
```
2631

2732
### SQL

‎evaluators/builtin/pyproject.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "agent-control-evaluators"
3-
version = "7.2.0"
3+
version = "7.3.0"
44
description = "Builtin evaluators for agent-control"
55
readme = "README.md"
66
requires-python = ">=3.12"

‎evaluators/builtin/src/agent_control_evaluators/list/config.py‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,12 @@ class ListEvaluatorConfig(EvaluatorConfig):
1919
match_on: Literal["match", "no_match"] = Field(
2020
"match", description="Trigger rule on match or no match"
2121
)
22-
match_mode: Literal["exact", "contains"] = Field(
22+
match_mode: Literal["exact", "contains", "starts_with", "ends_with"] = Field(
2323
"exact",
24-
description="'exact' for full string match, 'contains' for keyword/substring match",
24+
description=(
25+
"'exact' for full string match, 'contains' for keyword matching, "
26+
"'starts_with' for prefix matching, and 'ends_with' for suffix matching"
27+
),
2528
)
2629
case_sensitive: bool = Field(False, description="Whether matching is case sensitive")
2730

‎evaluators/builtin/src/agent_control_evaluators/list/evaluator.py‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class ListEvaluator(Evaluator[ListEvaluatorConfig]):
1818
Checks if data matches values in a list. Supports:
1919
- any/all logic (match any value vs match all values)
2020
- match/no_match trigger (trigger on match or no match)
21-
- exact/contains mode (full match vs substring/keyword)
21+
- exact/contains/starts_with/ends_with mode (full match vs keyword vs prefix/suffix)
2222
- case sensitivity toggle
2323
2424
Example configs:
@@ -50,6 +50,12 @@ def _build_regex(self) -> Any:
5050
if self.config.match_mode == "contains":
5151
# Word boundary matching for substring/keyword detection
5252
pattern = f"\\b({'|'.join(escaped)})\\b"
53+
elif self.config.match_mode == "starts_with":
54+
# Prefix matching using anchors
55+
pattern = f"^({'|'.join(escaped)})"
56+
elif self.config.match_mode == "ends_with":
57+
# Suffix matching using anchors
58+
pattern = f"({'|'.join(escaped)})$"
5359
else:
5460
# Exact match using anchors
5561
pattern = f"^({'|'.join(escaped)})$"

0 commit comments

Comments
 (0)