"""
Auto-generated Skill

Skill ID: sum_2numbers
Version: v1

Inputs:
- `first_number`: number
- `second_number`: number

Outputs:
- `sum`: number

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 ---
    first_number_raw = inputs.get('first_number')
    second_number_raw = inputs.get('second_number')

    parsed_first_number = 0.0
    parsed_second_number = 0.0

    try:
        # Treat empty or null `first_number` as 0
        if first_number_raw is None or (isinstance(first_number_raw, str) and first_number_raw.strip() == ""):
            parsed_first_number = 0.0
        else:
            parsed_first_number = float(first_number_raw)
    except (ValueError, TypeError) as e:
        return {
            "status": "ERROR",
            "message": f"Invalid input for 'first_number': '{first_number_raw}'. It must be a numerical value or empty. Error: {e}",
            "output": f"Error: Could not process first_number '{first_number_raw}'.",
            "data": {"error": "InvalidInput", "input_field": "first_number", "provided_value": first_number_raw}
        }

    try:
        # Treat empty or null `second_number` as 0
        if second_number_raw is None or (isinstance(second_number_raw, str) and second_number_raw.strip() == ""):
            parsed_second_number = 0.0
        else:
            parsed_second_number = float(second_number_raw)
    except (ValueError, TypeError) as e:
        return {
            "status": "ERROR",
            "message": f"Invalid input for 'second_number': '{second_number_raw}'. It must be a numerical value or empty. Error: {e}",
            "output": f"Error: Could not process second_number '{second_number_raw}'.",
            "data": {"error": "InvalidInput", "input_field": "second_number", "provided_value": second_number_raw}
        }

    total_sum = parsed_first_number + parsed_second_number

    output_message = f"The sum of the two numbers is {total_sum}."

    result = {
        "status": "SUCCESS",
        "message": output_message,
        "output": output_message,
        "data": {"sum": total_sum}
    }

    return result