"""
Custom Tools Example

Add custom tools to fairies for specialized functionality.
This example adds a color palette generator tool.
"""

import json
from fairy_swarm import FairySwarm


def generate_color_palette(theme: str, num_colors: int = 5) -> str:
    """
    Generate a color palette for a given theme.

    Args:
        theme: The theme for the palette (ocean, sunset, forest)
        num_colors: Number of colors to generate

    Returns:
        JSON string with the color palette
    """
    palettes = {
        "ocean": [
            "#0077B6",
            "#00B4D8",
            "#90E0EF",
            "#CAF0F8",
            "#03045E",
        ],
        "sunset": [
            "#FF6B6B",
            "#FFA06B",
            "#FFD93D",
            "#FF8E53",
            "#C44536",
        ],
        "forest": [
            "#2D5A27",
            "#5B8C5A",
            "#8BC34A",
            "#C8E6C9",
            "#1B5E20",
        ],
    }
    colors = palettes.get(theme.lower(), palettes["ocean"])[
        :num_colors
    ]
    return json.dumps({"theme": theme, "colors": colors})


swarm = FairySwarm(
    name="Color-Aware Design Team",
    model_name="gpt-5.4",
    max_loops=2,
    verbose=True,
    additional_tools=[generate_color_palette],
)

result = swarm.run(
    "Design a landing page for an ocean-themed travel agency. "
    "Use the color palette tool to get appropriate colors for the design."
)

print(result)
