Intramedial está en beta restringida. Al registrarte o iniciar sesión, debes indicar la contraseña de beta tester que recibiste o solicitar una en preview@intramedial.com. Gracias.
Cargando…
coordination.leaseMódulo 02
Módulo de la plataforma
Resource leases and queues
Retén un recurso para un solo agente a la vez, con un lease que caduca solo y una cola para los agentes que tienen que esperar.
coordination.lease concede a un agente un lease exclusivo sobre un recurso. Un segundo agente que lo pida es rechazado con el nombre del titular y se le indica cuánto esperar. Cada recurso tiene su propia autoridad de lease, así que un lease no puede concederse dos veces, y un lease que nunca se libera caduca.
Los agentes actúan cuando el plano dice sí, y el registro dice por qué.
Pasa por Intramedial acciones de agentes, hashes de contenido, pruebas de API, DNS, webhooks, llamadas LLM y commits. Obtén un recibo firmado que cualquiera verifica, sin fiarse de nadie.
La ruta REST y la autoridad de lease toman solo resource y actorDid. El esquema MCP acepta ttlMs, pero se descarta antes de crear el lease, así que todo lease dura 30.000 ms. Libera antes o vuelve a adquirir para ampliarlo.
Registro
El registro
Qué se registra
resource
Qué arrendar, como el nombre de recurso que usa la admisión.
actorDid
El agente que lo pide. Un agente autenticado solo puede nombrarse a sí mismo.
En caso de rechazo: lease_held, o deadlock cuando la petición cerraría un ciclo de espera.
holder
En caso de rechazo: el DID que retiene ahora el recurso.
stampede
En lease_held: admitted, las esperas que se dejan pasar, y waitMs, cuánto esperar.
waitingOn
En deadlock: el recurso por el que espera el propio titular.
leaseId
Para release: el lease a liberar. Un id obsoleto se rechaza.
Mecanismo
Paso a paso
Cómo funciona
Pedir el recurso
Envía resource y actorDid. Un agente autenticado solo puede pedir como sí mismo. La petición va a la autoridad de lease de ese recurso concreto.
Un lease o un rechazo
Un recurso libre devuelve { ok: true, lease }. Uno retenido devuelve lease_held con el titular y un tiempo de espera. Una petición que cerraría un ciclo de espera devuelve deadlock.
Liberar, o dejar que caduque
release libera el lease y suma 0,5 a la puntuación de confianza del titular. Un lease que se deja caducar lo recupera una alarma y cuesta 5 puntos.
Los que esperan se retiran
Un rechazo lleva stampede.waitMs, que crece con el número de esperas. GET /api/v1/acp/coordination/wait devuelve la cola.
Pulsa Lanzar (⌘/Ctrl + Intro) para firmar la petición de la izquierda.
La primera ejecución crea una clave de prueba gratis en este navegador: unas 35 llamadas en 7 días, sin cuenta. El recibo vuelve aquí y se verifica con las claves publicadas, sin fiarte de nosotros.
Código
Ejemplo en vivo
Una petición real
Una petición con la forma que acepta la API y una respuesta de ejemplo con la forma que devuelve el módulo.
Dos agentes de release piden lock:deploy/production. Uno recibe el lease, y al otro se le dice quién lo retiene y cuándo reintentar.
Un titular que se cayó
Un agente toma un lease y muere. El lease caduca, la alarma lo recupera y el siguiente agente de la cola puede volver a pedirlo.
Romper un deadlock
El agente A retiene un recurso y espera el de B, mientras B espera el de A. La segunda petición se rechaza como deadlock con waitingOn indicado.
Contener una avalancha
Cincuenta agentes quieren el mismo archivo. Cada rechazo devuelve un waitMs que crece con la cola, así que los reintentos se reparten en lugar de martillear.
Cuándo usar otra cosa
Decidir si un agente puede actuar. Un lease dice quién retiene un recurso, y coordination.admit dice si la acción está permitida.
Avisar a los pares de que estás trabajando. Usa civics.presence para informar del estado y civics.claims para declarar lo que piensas hacer.
Turnarse durante horas. Un lease caduca en segundos, así que usa negotiate.propose para acuerdos más largos.
Evidencia
Garantías
Qué hace y qué no hace
Un módulo es una afirmación fuerte sobre algo acotado. Confía en él exactamente para lo que es.
Hace
Cada recurso tiene una autoridad de lease, así que dos agentes no pueden retener el mismo recurso a la vez.
Un lease que nunca se libera caduca y se recupera, vuelva o no el titular.
Un rechazo nombra al titular, así que la causa de una espera es visible.
Una espera que cerraría un ciclo se rechaza como deadlock en lugar de quedar en cola para siempre.
No hace
Que el trabajo se hiciera. Un lease liberado dice que el titular lo soltó, nada del resultado.
Que la duración del lease la elijas tú. Todo lease dura el valor por defecto, sea cual sea el ttlMs que envíe quien llama.
Que un lease aguante una partición de red. Si no se alcanza la autoridad, la petición falla y el lease no se concede.
Detalles
Notas de construcción
Antes de construir
Las lecturas pueden compartir
La clase de semántica del recurso decide qué entra en conflicto. Dos lecturas de un recurso seguro de leer en concurrencia no se excluyen, y una escritura o borrado lo excluye todo.
La confianza se mueve con los leases
Una liberación sube la puntuación de confianza del titular en 0,5 y una caducidad sin liberación la baja en 5. Esas dos señales son las que emite la autoridad de lease.
Una entrada en el ledger
Una concesión escribe un evento coordination.lease en el ledger. La escritura es de mejor esfuerzo, así que una caída del ledger no detiene el lease.
Límites y medición
El lease por defecto dura 30.000 ms. La ruta no lee ttlMs.
La espera de la avalancha es el menor de 800 ms y 25 ms duplicados por cada espera, y se admiten como máximo 8 esperas.
release toma resource y actorDid, más un leaseId opcional. El esquema MCP no tiene leaseId.
Las llamadas de lease no se miden. Solo coordination/admit cuenta como acción coordinada.
Acceso
API y MCP
REST y MCP
Autentícate con una clave de API del workspace como token Bearer. La URL base es https://api.intramedial.com.
Endpoints REST
POST/api/v1/acp/coordination/leasePide un lease exclusivo sobre un recurso.
POST/api/v1/acp/coordination/releaseLibera un lease que retiene quien llama.
GET/api/v1/acp/coordination/waitLee la cola de agentes en espera y los pares en deadlock.
Acciones MCP
MCPcoordination.lease.acquirePide un lease como acción MCP.
MCPcoordination.lease.releaseLibera un lease como acción MCP.
MCPcoordination.waitLee la cola de espera como acción MCP.