feat(dashboard): página Politicas con detalle de validadores y versiones

Selector de política; muestra descripción, on_validator_error y los validadores
de input/output (cada uno expandible con su config), más la tabla de versiones.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Juan
2026-05-11 12:57:47 +02:00
co-authored by Claude Opus 4.7
parent a36a8afa09
commit a874d9f57d
@@ -0,0 +1,47 @@
"""Página de políticas de guardrails y sus versiones."""
from __future__ import annotations
import streamlit as st
from agentforge_dashboard.client import CoreClient
@st.cache_resource
def get_client() -> CoreClient:
return CoreClient()
client = get_client()
st.title("📐 Politicas de guardrails")
st.caption("Inventario de políticas y sus versiones (estilo Git).")
policies = client.list_policies()
if not policies:
st.warning("No hay políticas registradas.")
st.stop()
names = [p["name"] for p in policies]
selected = st.selectbox("Política", names)
policy = next(p for p in policies if p["name"] == selected)
st.subheader(f"{policy['name']} @ {policy['version']}")
st.write(f"**Descripción:** {policy['description']}")
st.write(f"**On validator error:** `{policy['on_validator_error']}`")
col_in, col_out = st.columns(2)
with col_in:
st.markdown("**Validadores de input**")
for v in policy["input_validators"]:
with st.expander(v["type"]):
st.json(v["config"])
with col_out:
st.markdown("**Validadores de output**")
for v in policy["output_validators"]:
with st.expander(v["type"]):
st.json(v["config"])
st.divider()
st.subheader("Historial de versiones")
versions = client.list_policy_versions(selected)
st.dataframe(versions, hide_index=True, use_container_width=True)