"""Utility functions for LLM Code Deployment system.""" import base64 import hashlib import re from datetime import datetime from typing import Any from uuid_utils import uuid7 def generate_nonce() -> str: """Generate a unique nonce using UUID7.""" return str(uuid7()) def generate_task_id(template_id: str, brief: str, attachments: list[dict[str, Any]]) -> str: """Generate a unique task ID based on template and content.""" content = f"{brief}{str(attachments)}" hash_value = hashlib.sha256(content.encode()).hexdigest()[:5] return f"{template_id}-{hash_value}" def decode_data_uri(data_uri: str) -> tuple[str, bytes]: """Decode a data URI into mime type and content.""" # Format: data:mime/type;base64,content match = re.match(r"data:([^;]+);base64,(.+)", data_uri) if not match: raise ValueError(f"Invalid data URI format: {data_uri[:50]}...") mime_type = match.group(1) encoded_content = match.group(2) content = base64.b64decode(encoded_content) return mime_type, content def encode_data_uri(mime_type: str, content: bytes) -> str: """Encode content as a data URI.""" encoded = base64.b64encode(content).decode("utf-8") return f"data:{mime_type};base64,{encoded}" def sanitize_repo_name(name: str) -> str: """Sanitize a string for use as a GitHub repository name.""" # Replace spaces and special chars with hyphens sanitized = re.sub(r"[^a-zA-Z0-9-_.]", "-", name) # Remove leading/trailing hyphens sanitized = sanitized.strip("-") # Collapse multiple hyphens sanitized = re.sub(r"-+", "-", sanitized) # Ensure lowercase return sanitized.lower() def get_timestamp() -> datetime: """Get current UTC timestamp.""" return datetime.utcnow()