system-prompts-and-models-o.../dealix/api/routers/security_curator.py
Sami Assiri b13cb389cc feat(dealix): sync full Dealix package to repo
- API routers, ACA modules, integrations (draft operators)
- Docs, landing pages, scripts (launch readiness, scorecard)
- Tests and CI workflow updates for Dealix

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-01 21:01:17 +03:00

38 lines
1.5 KiB
Python

"""Security curator API — redact and inspect diffs."""
from __future__ import annotations
from typing import Any
from fastapi import APIRouter, Body
from auto_client_acquisition.security_curator.patch_firewall import inspect_diff
from auto_client_acquisition.security_curator.secret_redactor import redact_secrets, scan_payload
from auto_client_acquisition.security_curator.trace_redactor import redact_trace_payload
router = APIRouter(prefix="/api/v1/security-curator", tags=["security_curator"])
@router.get("/demo")
async def demo() -> dict[str, Any]:
return {"ok": True, "message_ar": "طبقة أمان للوكلاء — redaction وفحص فرق قبل التطبيق.", "demo": True}
@router.post("/redact")
async def redact(payload: dict[str, Any] = Body(default_factory=dict)) -> dict[str, Any]:
text = str(payload.get("text") or "")
return {"redacted": redact_secrets(text), "findings": scan_payload(payload)}
@router.post("/inspect-diff")
async def inspect_diff_route(payload: dict[str, Any] = Body(default_factory=dict)) -> dict[str, Any]:
diff = str(payload.get("diff_text") or "")
return inspect_diff(diff)
@router.post("/trace/sanitize")
async def trace_sanitize(payload: dict[str, Any] = Body(default_factory=dict)) -> dict[str, Any]:
"""Redact nested trace/span metadata before export to observability backends."""
body = payload.get("payload") if isinstance(payload.get("payload"), dict) else payload
return {"sanitized": redact_trace_payload(body or {}), "demo": True}