Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 8 additions & 0 deletions agent_assembly/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -56,6 +58,8 @@
"AdapterValidationError",
"ToolExecutionBlockedError",
"MCPToolBlockedError",
"PolicyViolationError",
"OpTerminatedError",
"AuditEvent",
"CallStackNode",
"CallStackNodeKind",
Expand Down Expand Up @@ -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,
)
Expand Down
13 changes: 13 additions & 0 deletions test/unit/test_exceptions.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
from __future__ import annotations

import agent_assembly
import agent_assembly.exceptions as exceptions
from agent_assembly import MCPToolBlockedError


Expand All @@ -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