⌁ LSFA
Extensión experimental · 0.3

Presentación declarativa segura

Formularios generados y organizados en tiempo de presentación, sin convertir el formato visual en código o autoridad.

CONTRATO

Tres formas de presentar la misma operación

01

Automática

El renderer deriva controles accesibles directamente de los campos autorizados.

"presentation": "auto"
02

Layout declarativo

La solicitud agrupa y ordena todos los campos mediante secciones inertes.

"mode": "form"
03

Perfil local

Una interfaz especializada se selecciona por nombre desde el registro confiable.

"profile": "account_v1"
SOLICITUD
{
  "presentation": {
    "mode": "form",
    "locale": "es",
    "theme": "system",
    "layout": { "sections": [
      { "id": "account", "title": "Tu cuenta",
        "fields": ["email", "password"] },
      { "id": "advanced", "title": "Configuración avanzada",
        "fields": ["imap_host", "imap_port"], "collapsed": true }
    ]}
  }
}

Las secciones deben contener exactamente una vez todos los campos de la operación. Si falta uno, aparece uno desconocido o se repite, la solicitud falla antes de capturar información.

PERFILES CONFIABLES

El agente referencia; el cliente instala

Un perfil no viaja dentro de la solicitud. La aplicación registra localmente una plantilla PresentationSpec y la solicitud solo puede seleccionar su identificador. PresentationRegistry rechaza perfiles desconocidos y no acepta plantillas que a su vez apunten a otro perfil.

registry = PresentationRegistry({
  "account_v1": PresentationSpec(
    mode="form",
    sections=(...)
  )
})

client = LocalClient(
  policies, store, verify_confirmation,
  presentations=registry
)
FRONTERA DE SEGURIDAD

La presentación nunca autoriza

El agente puede sugerir: modo, idioma, tema, orden, secciones o el nombre de un perfil permitido.

La política local controla: campos, tipos, sensibilidad, validadores, riesgo, método de confirmación y ejecutor.

El cliente renderiza siempre: secretos, resumen de la acción, PIN, TOTP y botones de confirmación.

No existe superficie para: HTML, JavaScript, URLs, callbacks, red o acciones declaradas por el agente.

COMPATIBILIDAD

LSFA sigue sin ser MCP

La extensión toma únicamente la separación conceptual entre operación y presentación. No usa transporte MCP, recursos ui://, iframes ni llamadas a herramientas. Las cadenas de presentación de LSFA 0.2 continúan siendo válidas y GUI, terminal y manual/headless conservan el mismo ciclo de autorización.