from .data import load_local_csv, load_local_csv_files

REGISTRY_V0 = [
    {
        "dataset_name": "simonycl/aya-23-8B_advbench_jailbreak",
        "num_prompts": 416,
        "tokens": None,  # Add actual token count if available
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/simonycl/aya-23-8B_advbench_jailbreak",
        "modality": "text",
    },
    {
        "dataset_name": "acmc/jailbreaks_dataset_with_perplexity_bigcode_starcoder2-3b_bigcode_starcoder2-7b",
        "num_prompts": 11191,
        "tokens": None,  # Add actual token count if available
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/acmc/jailbreaks_dataset_with_perplexity_bigcode_starcoder2-3b_bigcode_starcoder2-7b",
        "modality": "text",
    },
    {
        "dataset_name": "karanxa/dolphin-jailbreak-finetuning-dataset",
        "num_prompts": 42684,
        "tokens": None,  # Add actual token count if available
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/karanxa/dolphin-jailbreak-finetuning-dataset",
        "modality": "text",
    },
    {
        "dataset_name": "karanxa/llama-2-jailbreak-dataset",
        "num_prompts": 40613,
        "tokens": None,  # Add actual token count if available
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/karanxa/llama-2-jailbreak-dataset",
        "modality": "text",
    },
    {
        "dataset_name": "karanxa/llama2-uncensored-jailbreak-dataset-finetuning",
        "num_prompts": 42854,
        "tokens": None,  # Add actual token count if available
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/karanxa/llama2-uncensored-jailbreak-dataset-finetuning",
        "modality": "text",
    },
    {
        "dataset_name": "liuyanchen1015/Llama-3.2-1B_jailbreak_responses",
        "num_prompts": 9888,
        "tokens": None,  # Add actual token count if available
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/liuyanchen1015/Llama-3.2-1B_jailbreak_responses",
        "modality": "text",
    },
    {
        "dataset_name": "liuyanchen1015/Llama-3.2-1B-Instruct_jailbreak_responses",
        "num_prompts": 9888,
        "tokens": None,  # Add actual token count if available
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/liuyanchen1015/Llama-3.2-1B-Instruct_jailbreak_responses",
        "modality": "text",
    },
    {
        "dataset_name": "liuyanchen1015/Llama-3.2-1B-Instruct_jailbreak_responses_with_judgment",
        "num_prompts": 9888,
        "tokens": None,  # Add actual token count if available
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/liuyanchen1015/Llama-3.2-1B-Instruct_jailbreak_responses_with_judgment",
        "modality": "text",
    },
    {
        "dataset_name": "jackhhao/jailbreak-classification",
        "num_prompts": 1044,
        "tokens": None,  # Add actual token count if available
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/jackhhao/jailbreak-classification",
        "modality": "text",
    },
    {
        "dataset_name": "markush1/LLM-Jailbreak-Classifier",
        "num_prompts": 201193,
        "tokens": None,  # Add actual token count if available
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/markush1/LLM-Jailbreak-Classifier",
        "modality": "text",
    },
    {
        "dataset_name": "walledai/JailbreakBench",
        "num_prompts": 200,
        "tokens": None,  # Add actual token count if available
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/walledai/JailbreakBench",
        "modality": "text",
    },
    {
        "dataset_name": "walledai/JailbreakHub",
        "num_prompts": 15140,
        "tokens": None,  # Add actual token count if available
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/walledai/JailbreakHub",
        "modality": "text",
    },
    {
        "dataset_name": "Granther/evil-jailbreak",
        "num_prompts": 1200,
        "tokens": None,  # Add actual token count if available
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/Granther/evil-jailbreak",
        "modality": "text",
    },
    {
        "dataset_name": "sevdeawesome/jailbreak_success",
        "num_prompts": 10800,
        "tokens": None,  # Add actual token count if available
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/sevdeawesome/jailbreak_success",
        "modality": "text",
    },
    {
        "dataset_name": "IDA-SERICS/Disaster-tweet-jailbreaking",
        "num_prompts": 3000,
        "tokens": None,  # Add actual token count if available
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/IDA-SERICS/Disaster-tweet-jailbreaking",
        "modality": "text",
    },
    {
        "dataset_name": "GeorgeDaDude/Jailbreak_Complete_DS_labeled",
        "num_prompts": 11383,
        "tokens": None,  # Add actual token count if available
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/GeorgeDaDude/Jailbreak_Complete_DS_labeled",
        "modality": "text",
    },
    {
        "dataset_name": "dayone3nder/jailbreak_prompt_JBB_sft_trainset",
        "num_prompts": 4785,
        "tokens": None,  # Add actual token count if available
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/dayone3nder/jailbreak_prompt_JBB_sft_trainset",
        "modality": "text",
    },
    {
        "dataset_name": "dayone3nder/general_safe_mix_jailbreak_prompt_JBB_trainset",
        "num_prompts": 24679,
        "tokens": None,  # Add actual token count if available
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/dayone3nder/general_safe_mix_jailbreak_prompt_JBB_trainset",
        "modality": "text",
    },
]

REGISTRY = REGISTRY_V0 + [
    {
        "dataset_name": "AgenticBackend",
        "num_prompts": 2000,
        "tokens": 0,
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Fine-tuned cloud hosted model",
        "selected": True,
        "url": "Cloud",
        "dynamic": False,
        "opts": {
            "port": 8718,
            "modules": ["encoding"],
        },
        "modality": "text",
    },
    {
        "dataset_name": "ShawnMenz/DAN_jailbreak",
        "num_prompts": 666,
        "tokens": 224196,
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/ShawnMenz/DAN_jailbreak",
        "modality": "text",
    },
    {
        "dataset_name": "deepset/prompt-injections",
        "num_prompts": 203,
        "tokens": 6988,
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/deepset/prompt-injections",
        "modality": "text",
    },
    {
        "dataset_name": "rubend18/ChatGPT-Jailbreak-Prompts",
        "num_prompts": 79,
        "tokens": 26971,
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/rubend18/ChatGPT-Jailbreak-Prompts",
        "modality": "text",
    },
    {
        "dataset_name": "notrichardren/refuse-to-answer-prompts",
        "num_prompts": 522,
        "tokens": 7172,
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/notrichardren/refuse-to-answer-prompts",
        "modality": "text",
    },
    {
        "dataset_name": "Lemhf14/EasyJailbreak_Datasets",
        "num_prompts": 1630,
        "tokens": 19758,
        "is_active": False,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/Lemhf14/EasyJailbreak_Datasets",
        "modality": "text",
    },
    {
        "dataset_name": "markush1/LLM-Jailbreak-Classifier",
        "num_prompts": 1119,
        "tokens": 19758,
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/markush1/LLM-Jailbreak-Classifier",
        "modality": "text",
    },
    {
        "dataset_name": "JailbreakV-28K/JailBreakV-28k",
        "num_prompts": 28300,
        "tokens": 1975800,
        "is_active": False,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/JailbreakV-28K/JailBreakV-28k",
        "modality": "text",
    },
    {
        "dataset_name": "ShawnMenz/jailbreak_sft_rm_ds",
        "num_prompts": 371000,
        "tokens": 1975800,
        "is_active": False,
        "approx_cost": 0.0,
        "source": "Hugging Face Datasets",
        "selected": False,
        "dynamic": False,
        "url": "https://huggingface.co/ShawnMenz/jailbreak_sft_rm_ds",
        "modality": "text",
    },
    {
        "dataset_name": "Steganography",
        "num_prompts": 10,
        "tokens": 0,
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Local mutation dataset",
        "selected": False,
        "dynamic": True,
        "url": "",
        "modality": "text",
    },
    {
        "dataset_name": "GPT fuzzer",
        "num_prompts": 10,
        "tokens": 0,
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Local mutation dataset",
        "selected": False,
        "dynamic": True,
        "url": "",
        "modality": "text",
    },
    {
        "dataset_name": "jailbreak_llms/2023_05_07",
        "num_prompts": 0,
        "tokens": 0,
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Github",
        "selected": False,
        "dynamic": True,
        "url": "https://github.com/verazuo/jailbreak_llms",
        "modality": "text",
    },
    {
        "dataset_name": "jailbreak_llms/2023_12_25.csv",
        "num_prompts": 0,
        "tokens": 0,
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Github",
        "selected": False,
        "dynamic": True,
        "url": "https://github.com/verazuo/jailbreak_llms",
        "modality": "text",
    },
    {
        "dataset_name": "Malwaregen",
        "num_prompts": 0,
        "tokens": 0,
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Local dataset",
        "selected": False,
        "dynamic": True,
        "url": "",
        "modality": "text",
    },
    {
        "dataset_name": "Hallucination",
        "num_prompts": 0,
        "tokens": 0,
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Local dataset",
        "selected": False,
        "dynamic": True,
        "url": "",
        "modality": "text",
    },
    {
        "dataset_name": "DataLeak",
        "num_prompts": 0,
        "tokens": 0,
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Local dataset",
        "selected": False,
        "dynamic": True,
        "url": "",
        "modality": "text",
    },
    {
        "dataset_name": "llm-adaptive-attacks",
        "num_prompts": 0,
        "tokens": 0,
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Github: tml-epfl/llm-adaptive-attacks#0.0.1",
        "selected": False,
        "dynamic": True,
        "url": "https://github.com/tml-epfl/llm-adaptive-attacks",
        "modality": "text",
    },
    {
        "dataset_name": "Garak",
        "num_prompts": 0,
        "tokens": 0,
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Github: https://github.com/leondz/garak#v0.9.0.1",
        "selected": False,
        "url": "https://github.com/leondz/garak2",
        "dynamic": True,
        "opts": {
            "port": 8718,
            "modules": ["encoding"],
        },
        "modality": "text",
    },
    {
        "dataset_name": "Reinforcement Learning Optimization",
        "num_prompts": 0,
        "tokens": 0,
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Cloud hosted model",
        "selected": False,
        "url": "",
        "dynamic": True,
        "opts": {
            "port": 8718,
            "modules": ["encoding"],
        },
        "modality": "text",
    },
    {
        "dataset_name": "InspectAI",
        "num_prompts": 0,
        "tokens": 0,
        "is_active": True,
        "approx_cost": 0.0,
        "source": "Github: https://github.com/UKGovernmentBEIS/inspect_ai",
        "selected": False,
        "url": "https://github.com/UKGovernmentBEIS/inspect_ai",
        "dynamic": True,
        "modality": "text",
    },
    {
        "dataset_name": "Custom CSV",
        "num_prompts": len(load_local_csv().prompts),
        "tokens": load_local_csv().tokens,
        "approx_cost": 0.0,
        "is_active": True,
        "source": f"Local file dataset: {load_local_csv().metadata['src']}",
        "selected": len(load_local_csv().prompts),
        "url": "",
        "modality": "text",
    },
]

for ds in load_local_csv_files():
    REGISTRY.append(
        {
            "dataset_name": ds.dataset_name,
            "num_prompts": len(ds.prompts),
            "tokens": ds.prompts,
            "approx_cost": 0.0,
            "is_active": True,
            "source": f"Local file dataset: {ds.metadata['src']}",
            "selected": False,
            "url": "",
            "modality": "text",
        }
    )
