from pydantic import BaseModel from typing import Optional, Dict, Any # --------------------------------------------------------------------------- # Local fallback intent classes – mirrors the proprietary core engine's contracts # --------------------------------------------------------------------------- class ProvisionResourceIntent(BaseModel): resource_type: str region: str size: str configuration: Dict[str, Any] = {} environment: str requester: str provenance: Dict[str, Any] = {} class GrantAccessIntent(BaseModel): principal: str permission_level: str resource_scope: str justification: Optional[str] = None requester: str provenance: Dict[str, Any] = {} class DeployConfigurationIntent(BaseModel): service_name: str change_scope: str deployment_target: str risk_level_hint: Optional[float] = None configuration: Dict[str, Any] = {} requester: str provenance: Dict[str, Any] = {} # --------------------------------------------------------------------------- def to_oss_intent(api_request): if api_request.intent_type == "provision_resource": return ProvisionResourceIntent( resource_type=api_request.resource_type.value if hasattr(api_request.resource_type, 'value') else str(api_request.resource_type), region=api_request.region, size=api_request.size, configuration=api_request.configuration, environment=api_request.environment.value if hasattr(api_request.environment, 'value') else str(api_request.environment), requester=api_request.requester, provenance=api_request.provenance, ) elif api_request.intent_type == "grant_access": return GrantAccessIntent( principal=api_request.principal, permission_level=api_request.permission_level.value if hasattr(api_request.permission_level, 'value') else str(api_request.permission_level), resource_scope=api_request.resource_scope, justification=api_request.justification, requester=api_request.requester, provenance=api_request.provenance, ) elif api_request.intent_type == "deploy_config": return DeployConfigurationIntent( service_name=api_request.service_name, change_scope=api_request.change_scope.value if hasattr(api_request.change_scope, 'value') else str(api_request.change_scope), deployment_target=api_request.deployment_target.value if hasattr(api_request.deployment_target, 'value') else str(api_request.deployment_target), risk_level_hint=api_request.risk_level_hint, configuration=api_request.configuration, requester=api_request.requester, provenance=api_request.provenance, ) else: raise ValueError(f"Unknown intent type: {api_request.intent_type}")