"""Uniform request results for app and inter-app communication."""

from __future__ import annotations

from datetime import datetime, timezone
from typing import Any


def success_envelope(
    *, app_id: str, action: str, request_id: str,
    data: Any, meta: dict[str, Any] | None = None,
) -> dict[str, Any]:
    return {
        "contract_version": "1.0",
        "status": "ok",
        "app_id": app_id,
        "action": action,
        "request_id": request_id,
        "timestamp": datetime.now(timezone.utc).isoformat(),
        "data": data,
        "meta": meta or {},
        "error": None,
    }


def error_envelope(
    *, app_id: str, action: str, request_id: str,
    code: str, message: str, retryable: bool = False,
    details: dict[str, Any] | None = None,
) -> dict[str, Any]:
    return {
        "contract_version": "1.0",
        "status": "error",
        "app_id": app_id,
        "action": action,
        "request_id": request_id,
        "timestamp": datetime.now(timezone.utc).isoformat(),
        "data": None,
        "meta": {},
        "error": {
            "code": code,
            "message": message,
            "retryable": retryable,
            "details": details or {},
        },
    }
