File size: 1,331 Bytes
8cd3fa7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# server/task_generator.py
"""
Procedural policy scenario generator.
Generates variants of each task by swapping domains, severity, and actor types.
Activated by calling generate_task_variants() and updating TASK_REGISTRY.
"""
from __future__ import annotations
import random
from typing import Iterator, Dict

DOMAIN_VARIANTS = {
    "social_media": ["gaming_platform", "professional_network", "dating_app", "news_forum"],
    "corporate_hr": ["startup_culture", "remote_first_company", "government_agency", "university"],
    "ecommerce": ["marketplace", "subscription_service", "auction_platform", "b2b_procurement"],
}

ACTOR_VARIANTS = ["new_user", "power_user", "verified_creator", "anonymous_account", "enterprise_client"]


def generate_easy_variant(base_task: Dict, domain: str) -> Dict:
    variant = dict(base_task)
    variant["task_id"] = f"task_easy_{domain.replace(' ', '_')}"
    variant["description"] = base_task["description"].replace("social media platform", domain)
    return variant


def generate_task_variants(base_task: Dict, n: int = 5) -> Iterator[Dict]:
    domain_list = list(DOMAIN_VARIANTS.values())
    all_domains = [d for sublist in domain_list for d in sublist]
    for i in range(min(n, len(all_domains))):
        domain = all_domains[i]
        yield generate_easy_variant(base_task, domain)