"""
Auto-generated Skill

Skill ID: aritmatika_dasar
Version: v1

Inputs:
- `X`: number
- `Y`: number

Outputs:
- `jumlah`: number
- `kurang`: number
- `kali`: number
- `bagi`: number|string

Side Effects:
None. This skill performs a pure computation and does not alter any system state or external services.

[WARNING] GENERATED CODE — DO NOT EDIT MANUALLY

## Supported Output Types

The `run()` function should return a dict with these fields:

### Required:
- status: "SUCCESS" | "FAILED" | "ERROR"
- message: Human-readable summary

### Optional Rich Outputs (UI will render these):
- output: Plain text response
- data: Any structured data (dict)
- table: {{headers: [...], rows: [[...], [...]]}}
- file: {{name: "file.pdf", path: "/path", mime: "application/pdf", size: "1.2 MB"}}
- image: {{url: "/static/img.png", caption: "Description", alt: "Alt text"}}
- chart: {{type: "bar", title: "Title", labels: [...], datasets: [{{label: "A", data: [...]}}]}}
- actions: [{{id: "action_id", label: "Button Text", style: "primary|secondary|success|danger"}}]
"""

from typing import Dict, Any


def validate_inputs(inputs: Dict[str, Any]) -> None:
    """
    Validate required inputs.
    Raise ValueError if invalid.
    """
    if not isinstance(inputs, dict):
        raise ValueError("inputs must be a dictionary")


def run(inputs: Dict[str, Any]) -> Dict[str, Any]:
    """
    Single entrypoint for this skill.
    """
    validate_inputs(inputs)

    # --- Skill Logic ---
    x_raw = inputs.get('X')
    y_raw = inputs.get('Y')

    parsed_X = 0.0
    parsed_Y = 0.0

    try:
        # Treat empty or null `X` as 0
        if x_raw is None or (isinstance(x_raw, str) and x_raw.strip() == ""):
            parsed_X = 0.0
        else:
            parsed_X = float(x_raw)
    except (ValueError, TypeError) as e:
        return {
            "status": "ERROR",
            "message": f"Input tidak valid untuk 'X': '{x_raw}'. Harus berupa nilai numerik atau kosong. Error: {e}",
            "output": f"Error: Tidak dapat memproses input 'X' dengan nilai '{x_raw}'.",
            "data": {"error": "InvalidInput", "input_field": "X", "provided_value": x_raw}
        }

    try:
        # Treat empty or null `Y` as 0
        if y_raw is None or (isinstance(y_raw, str) and y_raw.strip() == ""):
            parsed_Y = 0.0
        else:
            parsed_Y = float(y_raw)
    except (ValueError, TypeError) as e:
        return {
            "status": "ERROR",
            "message": f"Input tidak valid untuk 'Y': '{y_raw}'. Harus berupa nilai numerik atau kosong. Error: {e}",
            "output": f"Error: Tidak dapat memproses input 'Y' dengan nilai '{y_raw}'.",
            "data": {"error": "InvalidInput", "input_field": "Y", "provided_value": y_raw}
        }

    jumlah = parsed_X + parsed_Y
    kurang = parsed_X - parsed_Y
    kali = parsed_X * parsed_Y

    if parsed_Y == 0:
        bagi = "Tidak terdefinisi"
    else:
        bagi = parsed_X / parsed_Y

    output_message = f"Hasil dari operasi aritmatika Anda adalah: Penjumlahan {jumlah}, Pengurangan {kurang}, Perkalian {kali}, dan Pembagian {bagi}."

    result = {
        "status": "SUCCESS",
        "message": output_message,
        "output": output_message,
        "data": {
            "jumlah": jumlah,
            "kurang": kurang,
            "kali": kali,
            "bagi": bagi
        }
    }

    return result