Skip to content

Commit 02a9600

Browse files
committed
fix: handle additionalProperties: None edge case
1 parent bcc88e6 commit 02a9600

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

src/agents/strict_schema.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ def _ensure_strict_json_schema(
5151
typ = json_schema.get("type")
5252
if typ == "object" and "additionalProperties" not in json_schema:
5353
json_schema["additionalProperties"] = False
54+
elif typ == "object" and json_schema.get("additionalProperties") is None:
55+
json_schema["additionalProperties"] = False
5456
elif (
5557
typ == "object"
5658
and "additionalProperties" in json_schema

tests/test_strict_schema.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,3 +156,20 @@ def test_null_values_removal():
156156
assert "maximum" not in param_schema
157157
assert "items" not in param_schema
158158
assert "properties" not in param_schema
159+
160+
161+
def test_additional_properties_none_handling():
162+
"""
163+
Test that additionalProperties: None is properly converted to False to maintain strictness.
164+
"""
165+
schema_with_none_additional_properties = {
166+
"type": "object",
167+
"properties": {"param": {"type": "string"}},
168+
"additionalProperties": None,
169+
}
170+
171+
result = ensure_strict_json_schema(schema_with_none_additional_properties)
172+
173+
# additionalProperties should be False, not removed
174+
assert result["additionalProperties"] is False
175+
assert "additionalProperties" in result

0 commit comments

Comments
 (0)