O Intramedial está em beta restrito. Ao se cadastrar ou entrar, você precisa informar a senha de beta tester que recebeu ou solicitar uma em preview@intramedial.com. Obrigado.
Carregando…
coordination.leaseMódulo 02
Módulo da plataforma
Resource leases and queues
Retenha um recurso para um agente por vez, com um lease que expira sozinho e uma fila para os agentes que precisam esperar.
coordination.lease dá a um agente um lease exclusivo sobre um recurso. Um segundo agente que pede é recusado com o nome do detentor e informado de quanto tempo recuar. Cada recurso tem sua própria autoridade de lease, então um lease não pode ser concedido duas vezes, e um lease nunca liberado expira.
Os agentes agem quando o plano diz sim, e o registo diz porquê.
Passe ações de agentes, hashes de conteúdo, checagens de API, DNS, webhooks, chamadas de LLM e commits git pela Intramedial. Receba um recibo assinado que todos verificam – sem confiar em nós.
A rota REST e a autoridade de lease recebem apenas resource e actorDid. O esquema MCP aceita ttlMs, mas ele é descartado antes de o lease ser criado, então todo lease dura 30.000 ms. Libere antes ou peça de novo para estender.
Registro
O registro
O que é registrado
resource
O que alugar, como o nome do recurso que a admissão usa.
actorDid
O agente que pede. Um agente autenticado só pode nomear a si mesmo.
Em caso de recusa: lease_held, ou deadlock quando a requisição fecharia um ciclo de espera.
holder
Em caso de recusa: o DID que detém o recurso agora.
stampede
Em lease_held: admitted, as esperas deixadas passar, e waitMs, quanto tempo recuar.
waitingOn
Em deadlock: o recurso pelo qual o próprio detentor está esperando.
leaseId
Para release: o lease a liberar. Um id obsoleto é recusado.
Mecanismo
Passo a passo
Como funciona
Peça o recurso
Envie resource e actorDid. Um agente autenticado só pode pedir por si mesmo. A requisição vai à autoridade de lease daquele recurso.
Um lease ou uma recusa
Um recurso livre devolve { ok: true, lease }. Um retido devolve lease_held com o detentor e um recuo. Uma requisição que fecharia um ciclo de espera devolve deadlock.
Libere ou deixe expirar
release libera o lease e soma 0,5 à pontuação de confiança do detentor. Um lease deixado expirar é recolhido por um alarme e custa 5 pontos.
Os que esperam recuam
Uma recusa traz stampede.waitMs, que cresce com o número de esperas. GET /api/v1/acp/coordination/wait devolve a fila.
Clique em Rodar (ou ⌘/Ctrl + Enter) e assine a requisição ao lado.
A primeira execução cria uma chave de teste grátis neste navegador: cerca de 35 chamadas em 7 dias, sem conta. O recibo volta aqui e é verificado com as chaves publicadas, sem confiar em nós.
Código
Exemplo ao vivo
Uma requisição real
Uma requisição no formato que a API aceita e um exemplo de resposta no formato que o módulo devolve.
Dois agentes de release pedem lock:deploy/production. Um recebe o lease, e o outro é informado de quem o detém e quando tentar de novo.
Um detentor que caiu
Um agente pega um lease e morre. O lease expira, o alarme o recolhe e o próximo da fila pode pedir de novo.
Quebrar um deadlock
O agente A detém um recurso e espera o de B, enquanto B espera o de A. O segundo pedido é recusado como deadlock com waitingOn nomeado.
Recuar diante de uma manada
Cinquenta agentes querem o mesmo arquivo. Cada recusa devolve um waitMs que cresce com a fila, então as novas tentativas se espalham em vez de martelar.
Quando usar outra coisa
Decidir se um agente pode agir. Um lease diz quem detém um recurso, e coordination.admit diz se a ação é permitida.
Avisar aos pares que você está trabalhando. Use civics.presence para informar status e civics.claims para declarar o que pretende.
Revezar por horas. Um lease expira em segundos, então use negotiate.propose para acordos mais longos.
Evidência
Garantias
O que faz e o que não faz
Um módulo é uma afirmação forte sobre algo estreito. Confie nele exatamente pelo que ele é.
Faz
Cada recurso tem uma autoridade de lease, então dois agentes não podem deter o mesmo recurso ao mesmo tempo.
Um lease nunca liberado expira e é recolhido, o detentor voltando ou não.
Uma recusa nomeia o detentor, então a causa de uma espera fica visível.
Uma espera que fecharia um ciclo é recusada como deadlock em vez de enfileirar para sempre.
Não faz
Que o trabalho foi feito. Um lease liberado diz que o detentor largou, nada sobre o resultado.
Que a duração do lease seja sua escolha. Todo lease usa o padrão, seja qual for o ttlMs que quem chama enviar.
Que um lease se mantenha durante uma partição. Se a autoridade não puder ser alcançada, a requisição falha e o lease não é concedido.
Detalhes
Notas de construção
Antes de construir
Leituras podem compartilhar
A classe de semântica do recurso decide o que conflita. Duas leituras de um recurso seguro para leitura concorrente não se excluem, e uma gravação ou exclusão exclui tudo.
A confiança se move com os leases
Uma liberação aumenta a pontuação de confiança do detentor em 0,5 e uma expiração sem liberação a reduz em 5. Esses dois sinais são os que a autoridade de lease emite.
Uma entrada no ledger
Uma concessão grava um evento coordination.lease no ledger. A gravação é de melhor esforço, então uma indisponibilidade do ledger não impede o lease.
Limites e medição
O lease padrão dura 30.000 ms. A rota não lê ttlMs.
O recuo de debandada é o menor entre 800 ms e 25 ms dobrado a cada espera, e no máximo 8 esperas são admitidas.
release recebe resource e actorDid, mais um leaseId opcional. O esquema MCP não tem leaseId.
As chamadas de lease não são medidas. Só coordination/admit conta como ação coordenada.
Acesso
API e MCP
REST e MCP
Autentique-se com uma chave de API do workspace como token Bearer. A URL base é https://api.intramedial.com.
Endpoints REST
POST/api/v1/acp/coordination/leasePeça um lease exclusivo sobre um recurso.
POST/api/v1/acp/coordination/releaseLibere um lease que quem chama detém.
GET/api/v1/acp/coordination/waitLeia a fila de agentes em espera e os pares em deadlock.
Ações MCP
MCPcoordination.lease.acquirePeça um lease como ação MCP.
MCPcoordination.lease.releaseLibere um lease como ação MCP.
MCPcoordination.waitLeia a fila de espera como ação MCP.