petter2025's picture
Update app/services/intent_adapter.py
2dbe6d3 verified
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}")