文件预览

cli_errors.py

查看 Audible Goodreads Deal Scout 技能包中的文件内容。

文件内容

audible_goodreads_deal_scout/cli_errors.py

from __future__ import annotations

from datetime import UTC, datetime
from typing import Any

from .shared import redact_sensitive_text


def cli_error_payload(
    *,
    command: str | None,
    reason_code: str,
    message: Any,
    exit_code: int = 1,
    error_type: str | None = None,
    details: dict[str, Any] | None = None,
) -> dict[str, Any]:
    payload: dict[str, Any] = {
        "schemaVersion": 1,
        "ok": False,
        "status": "error",
        "reasonCode": reason_code,
        "generatedAt": datetime.now(UTC).isoformat(),
        "command": command,
        "message": redact_sensitive_text(message),
        "error": {
            "type": error_type or "RuntimeError",
            "message": redact_sensitive_text(message),
        },
        "exitCode": exit_code,
    }
    if details:
        payload["details"] = details
    return payload