File size: 2,923 Bytes
2dbe6d3 2d521fd 2dbe6d3 2d521fd 2dbe6d3 2d521fd 2dbe6d3 2d521fd 2dbe6d3 2d521fd 2dbe6d3 | 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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | 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}") |