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}")