Skip to content

Commit afc9727

Browse files
evanbijoy251claude
andcommitted
feat: wire Rego evaluator into governance CLI bootstrap
Adds REGO_FEATURE_FLAG gate to resolve_governance(): when EnablePythonGovernanceRegoEvaluator is on, calls build_rego_evaluator_async(sdk.governance) and passes the result into GovernanceBootstrap.wrap_runtime() → UiPathGovernedRuntime. Mirrors the native evaluator bootstrap pattern exactly. Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
1 parent ee4e54f commit afc9727

1 file changed

Lines changed: 22 additions & 2 deletions

File tree

packages/uipath/src/uipath/_cli/_governance_bootstrap.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010
import atexit
1111
import logging
1212
from collections.abc import Callable
13-
from dataclasses import dataclass
13+
from dataclasses import dataclass, field
1414

1515
from uipath.core.governance import EnforcementMode, PolicyContext
16-
from uipath.core.governance.config import is_governance_enabled
16+
from uipath.core.governance.config import is_governance_enabled, is_rego_enabled
1717
from uipath.platform import UiPath
1818
from uipath.platform.governance import UiPathPlatformGovernanceProvider
1919
from uipath.platform.governance._live_track_event_dispatcher import (
@@ -27,6 +27,7 @@
2727
GuardrailCompensator,
2828
)
2929
from uipath.runtime.governance.native.models import PolicyIndex
30+
from uipath.runtime.governance.rego import RegoEvaluator
3031
from uipath.runtime.governance.runtime import UiPathGovernedRuntime
3132

3233
from ._governance import build_policy_index_from_yaml
@@ -54,6 +55,7 @@ class GovernanceBootstrap:
5455
policy_index: PolicyIndex
5556
enforcement_mode: EnforcementMode
5657
dispose: Callable[[], None]
58+
rego_evaluator: RegoEvaluator | None = field(default=None)
5759

5860
def wrap_runtime(
5961
self,
@@ -68,6 +70,7 @@ def wrap_runtime(
6870
policy_index=self.policy_index,
6971
enforcement_mode=self.enforcement_mode,
7072
evaluator=self.evaluator,
73+
rego_evaluator=self.rego_evaluator,
7174
agent_name=agent_name,
7275
runtime_id=runtime_id,
7376
)
@@ -166,9 +169,26 @@ def dispose() -> None:
166169
)
167170
return None
168171

172+
rego_evaluator: RegoEvaluator | None = None
173+
if is_rego_enabled():
174+
try:
175+
from uipath.runtime.governance.rego import build_rego_evaluator_async
176+
177+
rego_evaluator = await build_rego_evaluator_async(sdk.governance)
178+
if rego_evaluator is not None:
179+
console.info(
180+
f"Rego governance enabled "
181+
f"(hooks={[h.value for h in rego_evaluator.loaded_hooks]})"
182+
)
183+
except Exception as exc:
184+
console.warning(
185+
f"Rego governance setup failed - continuing without Rego evaluation: {exc}"
186+
)
187+
169188
return GovernanceBootstrap(
170189
evaluator=evaluator,
171190
policy_index=policy_index,
172191
enforcement_mode=response.mode,
173192
dispose=dispose,
193+
rego_evaluator=rego_evaluator,
174194
)

0 commit comments

Comments
 (0)