diff --git a/agent_assembly/__init__.py b/agent_assembly/__init__.py index f100befd..9ec709b5 100644 --- a/agent_assembly/__init__.py +++ b/agent_assembly/__init__.py @@ -34,6 +34,8 @@ "AdapterValidationError": _MODULE_EXCEPTIONS, "ToolExecutionBlockedError": _MODULE_EXCEPTIONS, "MCPToolBlockedError": _MODULE_EXCEPTIONS, + "PolicyViolationError": _MODULE_EXCEPTIONS, + "OpTerminatedError": _MODULE_EXCEPTIONS, "AuditEvent": _MODULE_TYPES, "CallStackNode": _MODULE_TYPES, "CallStackNodeKind": _MODULE_TYPES, @@ -56,6 +58,8 @@ "AdapterValidationError", "ToolExecutionBlockedError", "MCPToolBlockedError", + "PolicyViolationError", + "OpTerminatedError", "AuditEvent", "CallStackNode", "CallStackNodeKind", @@ -116,7 +120,11 @@ def __dir__() -> list[str]: from agent_assembly.exceptions import ConfigurationError as ConfigurationError from agent_assembly.exceptions import GatewayError as GatewayError from agent_assembly.exceptions import MCPToolBlockedError as MCPToolBlockedError + from agent_assembly.exceptions import OpTerminatedError as OpTerminatedError from agent_assembly.exceptions import PolicyError as PolicyError + from agent_assembly.exceptions import ( + PolicyViolationError as PolicyViolationError, + ) from agent_assembly.exceptions import ( ToolExecutionBlockedError as ToolExecutionBlockedError, ) diff --git a/test/unit/test_exceptions.py b/test/unit/test_exceptions.py index b5eac6c7..f4030e02 100644 --- a/test/unit/test_exceptions.py +++ b/test/unit/test_exceptions.py @@ -1,5 +1,7 @@ from __future__ import annotations +import agent_assembly +import agent_assembly.exceptions as exceptions from agent_assembly import MCPToolBlockedError @@ -13,3 +15,14 @@ def test_mcp_tool_blocked_error_exposes_tool_and_server_metadata() -> None: assert str(error) == "blocked" assert error.tool_name == "search_docs" assert error.server == "https://mcp.example.test" + + +# AAASM-5056: these two classes are documented as top-level imports; guard +# against them silently dropping out of the package's public export tables. +def test_policy_violation_and_op_terminated_are_top_level_exports() -> None: + from agent_assembly import OpTerminatedError, PolicyViolationError + + assert "PolicyViolationError" in agent_assembly.__all__ + assert "OpTerminatedError" in agent_assembly.__all__ + assert PolicyViolationError is exceptions.PolicyViolationError + assert OpTerminatedError is exceptions.OpTerminatedError