#!/usr/bin/env python3
"""AAE Lab 07: manager and specialists with scoped tool permissions."""
from dataclasses import dataclass

TOOLS = {
    "linux": {"get_service_status", "read_journal"},
    "kubernetes": {"get_pods", "get_service_endpoints"},
}

@dataclass
class Specialist:
    name: str
    domain: str

    def call(self, tool: str):
        allowed = TOOLS[self.domain]
        if tool not in allowed:
            raise PermissionError(f"{self.name} cannot use {tool}")
        return {"specialist": self.name, "tool": tool, "finding": f"fixture result from {tool}"}

linux = Specialist("linux-specialist", "linux")
k8s = Specialist("kubernetes-specialist", "kubernetes")

print("AAE Lab 07 — manager → scoped specialists → structured findings\n")
findings = [
    linux.call("get_service_status"),
    k8s.call("get_pods"),
]
for finding in findings:
    print(finding)

print("\nTry a forbidden cross-domain tool:")
try:
    linux.call("get_pods")
except PermissionError as exc:
    print("✓ Rejected:", exc)
else:
    raise SystemExit("FAIL: cross-domain tool use was not rejected")

summary = {"manager": "operations-manager", "findings": findings}
assert len(summary["findings"]) == 2
print("✓ Manager retained ownership and combined two bounded specialist results.")
