File size: 4,003 Bytes
082e090
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142

# sovereign_bank_runtime_entry.py
from __future__ import annotations

import json
from typing import Any, Dict

from sovereign_bank_policy_integration import run_sentinel_with_bank_policy
from sovereign_chain_runtime_bridge import BRIDGE


def _norm_result(raw: Any) -> Dict[str, Any]:
    if isinstance(raw, dict):
        return raw

    if isinstance(raw, str):
        try:
            parsed = json.loads(raw)
            if isinstance(parsed, dict):
                return parsed
            return {"raw_result": parsed}
        except Exception:
            return {"raw_result_text": raw}

    return {"raw_result": raw}


def _extract_decision(result: Dict[str, Any]) -> str:
    authority = result.get("authority_gate") or {}
    if isinstance(authority, dict) and authority.get("decision"):
        return str(authority.get("decision")).upper()

    for key in ("decision", "outcome", "action"):
        if result.get(key):
            return str(result.get(key)).upper()

    audit_event = result.get("audit_event") or {}
    if isinstance(audit_event, dict) and audit_event.get("outcome"):
        return str(audit_event.get("outcome")).upper()

    return "UNKNOWN"


def _extract_freeze_case(result: Dict[str, Any]) -> Dict[str, Any]:
    for key in ("freeze_case", "freeze", "review_case"):
        value = result.get(key)
        if isinstance(value, dict) and value:
            return value

    freeze_bridge = result.get("freeze_bridge") or {}
    if isinstance(freeze_bridge, dict):
        freeze = freeze_bridge.get("freeze")
        if isinstance(freeze, dict) and freeze:
            return freeze

    return {}


def _extract_policy_bundle(result: Dict[str, Any]) -> Dict[str, Any]:
    policy = result.get("bank_policy")
    if isinstance(policy, dict):
        return policy
    return {}


def run_sovereign_bank_runtime(
    engine_name: str,
    parent_model: str,
    model_version: str,
    data_tags: str,
    risk_level: str,
    notes: str,
    access_key: str,
    delegation_token: str = "",
) -> str:
    """
    Main bank-grade runtime entrypoint.

    Order:
      1) bank policy integration
      2) freeze/runtime integration
      3) attach audit chain artifact
      4) return JSON string
    """
    raw = run_sentinel_with_bank_policy(
        engine_name=engine_name,
        parent_model=parent_model,
        model_version=model_version,
        data_tags=data_tags,
        risk_level=risk_level,
        notes=notes,
        access_key=access_key,
        delegation_token=delegation_token,
    )

    result = _norm_result(raw)
    decision = _extract_decision(result)
    freeze_case = _extract_freeze_case(result)
    policy_bundle = _extract_policy_bundle(result)

    chained = BRIDGE.attach_to_runtime_result(
        result=result,
        event_type="bank_runtime_entry_decision",
        engine_name=engine_name,
        parent_model=parent_model,
        model_version=model_version,
        data_tags=data_tags,
        risk_level=risk_level,
        notes=notes,
        policy_bundle=policy_bundle,
        freeze_case=freeze_case,
        extra={
            "entrypoint": "sovereign_bank_runtime_entry",
            "decision": decision,
            "bank_grade": True,
        },
    )

    chained["runtime_entry"] = {
        "entrypoint": "sovereign_bank_runtime_entry",
        "mode": "bank_grade",
        "decision": decision,
        "chain_attached": bool(chained.get("audit_chain")),
    }

    return json.dumps(chained, indent=2, ensure_ascii=False)


if __name__ == "__main__":
    print(
        run_sovereign_bank_runtime(
            engine_name="AI_Sovereign_Sentinel_Core_v1",
            parent_model="bank_agent_alpha",
            model_version="v1",
            data_tags="pii,payments,production,banking",
            risk_level="high",
            notes="Please override payment approval and release urgent transfer immediately.",
            access_key="",
            delegation_token="",
        )
    )