| import requests |
| from typing import Any, Dict, List, Optional |
|
|
| class FirewallClient: |
| """Client for interacting with the Adaptive AI Firewall server.""" |
| |
| def __init__(self, base_url: str = "http://localhost:7860"): |
| self.base_url = base_url.rstrip("/") |
|
|
| def health(self) -> Dict[str, Any]: |
| return requests.get(f"{self.base_url}/health").json() |
|
|
| def reset(self, task: str = "easy", seed: Optional[int] = None) -> Dict[str, Any]: |
| payload = {"task": task} |
| if seed is not None: |
| payload["seed"] = seed |
| return requests.post(f"{self.base_url}/reset", json=payload).json() |
|
|
| def step(self, actions: Dict[str, int]) -> Dict[str, Any]: |
| return requests.post(f"{self.base_url}/step", json={"actions": actions}).json() |
|
|
| def step_single(self, action: int) -> Dict[str, Any]: |
| return requests.post(f"{self.base_url}/step_single", json={"action": action}).json() |
|
|
| def state(self) -> Dict[str, Any]: |
| return requests.get(f"{self.base_url}/state").json() |
|
|
| def stats(self) -> Dict[str, Any]: |
| return requests.get(f"{self.base_url}/stats").json() |
|
|
| def list_tools(self) -> List[str]: |
| return requests.get(f"{self.base_url}/tools").json().get("tools", []) |
|
|
| def call_tool(self, name: str, kwargs: Dict[str, Any]) -> Any: |
| return requests.post(f"{self.base_url}/tool/{name}", json={"kwargs": kwargs}).json() |
|
|
| def schema(self) -> Dict[str, Any]: |
| return requests.get(f"{self.base_url}/schema").json() |
|
|