From 4b3e4d44e8e748fb729434e9e4cf7ac5885324c1 Mon Sep 17 00:00:00 2001 From: "cristiano.hoshikawa" Date: Mon, 24 Aug 2026 11:49:29 -0300 Subject: [PATCH] new feature: External guardrails/judges --- .../calibrated/contestation_validation.py | 48 +++++++++++++++---- 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/agent_framework_oci/libs/agent_framework/src/agent_framework/guardrails/calibrated/contestation_validation.py b/agent_framework_oci/libs/agent_framework/src/agent_framework/guardrails/calibrated/contestation_validation.py index 36ec40c..39f375d 100644 --- a/agent_framework_oci/libs/agent_framework/src/agent_framework/guardrails/calibrated/contestation_validation.py +++ b/agent_framework_oci/libs/agent_framework/src/agent_framework/guardrails/calibrated/contestation_validation.py @@ -1,12 +1,44 @@ -"""Deprecated compatibility shim. +"""Deprecated lazy compatibility shim for agent-owned contestation validation. -Business-specific contestation validation moved to the Contas agent. New agents -must keep equivalent policy in their own domain package. +The generic framework no longer contains TIM/Contas business policy. The +legacy symbol remains importable so existing agents do not fail merely by +importing :mod:`agent_framework.guardrails.calibrated`. Resolution of the +domain implementation is delayed until the function is actually invoked. """ from __future__ import annotations + +import importlib import warnings -warnings.warn("agent_framework.guardrails.calibrated.contestation_validation is deprecated; use the agent-owned domain validator", DeprecationWarning, stacklevel=2) -try: - from app.domain.contas.contestation_validation import * # compatibility for migrated Contas only -except ImportError as exc: - raise ImportError("No domain contestation validator is installed. The generic framework does not provide TIM/Contas contestation policy.") from exc +from typing import Any + + +def _load_domain_validator(): + warnings.warn( + "agent_framework.guardrails.calibrated.contestation_validation is " + "deprecated; use the agent-owned domain validator", + DeprecationWarning, + stacklevel=3, + ) + try: + module = importlib.import_module("app.domain.contas.contestation_validation") + validator = getattr(module, "validate_contestation_items") + except (ImportError, AttributeError) as exc: + raise RuntimeError( + "No domain contestation validator is installed. The generic " + "framework does not provide TIM/Contas contestation policy. " + "Install/implement app.domain.contas.contestation_validation or " + "call the agent-owned validator directly." + ) from exc + return validator + + +def validate_contestation_items(*args: Any, **kwargs: Any): + """Invoke the legacy Contas validator lazily. + + Keeping this proxy import-safe preserves compatibility for older agents + while avoiding any dependency from the framework startup on ``app.domain``. + """ + return _load_domain_validator()(*args, **kwargs) + + +__all__ = ["validate_contestation_items"]