Intramedial è in beta ristretta. Alla registrazione o all’accesso devi fornire la password da beta tester che hai ricevuto oppure richiederne una a preview@intramedial.com. Grazie.
Caricamento…
coordination.leaseModulo 02
Modulo della piattaforma
Resource leases and queues
Tieni una risorsa per un solo agente alla volta, con un lease che decade da solo e una coda per gli agenti che devono aspettare.
coordination.lease concede a un agente un lease esclusivo su una risorsa. Un secondo agente che lo chiede è rifiutato con il nome del detentore e l’indicazione di quanto attendere. Ogni risorsa ha la propria autorità di lease, quindi un lease non può essere concesso due volte, e un lease mai rilasciato scade.
Gli agenti agiscono quando il piano dice sì, e il registro dice perché.
Fai passare da Intramedial azioni di agenti, hash di contenuti, controlli API, lookup DNS, webhook, chiamate LLM e commit git. Ricevi una ricevuta firmata che chiunque verifica, senza fidarsi di noi.
La route REST e l’autorità di lease accettano solo resource e actorDid. Lo schema MCP accetta ttlMs, ma viene scartato prima che il lease sia creato, quindi ogni lease dura 30.000 ms. Rilascia prima o acquisisci di nuovo per prolungare.
Registro
Il registro
Cosa viene registrato
resource
Cosa prendere in lease, come nome di risorsa usato dall’ammissione.
actorDid
L’agente che chiede. Un agente autenticato può nominare solo sé stesso.
In caso di rifiuto: lease_held, o deadlock quando la richiesta chiuderebbe un ciclo di attesa.
holder
In caso di rifiuto: il DID che ora tiene la risorsa.
stampede
Su lease_held: admitted, chi aspetta ed è lasciato passare, e waitMs, quanto attendere.
waitingOn
Su deadlock: la risorsa su cui il detentore stesso sta aspettando.
leaseId
Per release: il lease da rilasciare. Un id obsoleto è rifiutato.
Meccanismo
Passo dopo passo
Come funziona
Chiedi la risorsa
Invia resource e actorDid. Un agente autenticato può chiedere solo come sé stesso. La richiesta va all’autorità di lease di quella singola risorsa.
Un lease o un rifiuto
Una risorsa libera restituisce { ok: true, lease }. Una occupata restituisce lease_held con il detentore e un tempo di attesa. Una richiesta che chiuderebbe un ciclo di attesa restituisce deadlock.
Rilascia, o lascia decadere
release libera il lease e aggiunge 0,5 al punteggio di fiducia del detentore. Un lease lasciato scadere è ripreso da un allarme e costa 5 punti.
Chi aspetta si ritira
Un rifiuto porta stampede.waitMs, che cresce col numero di chi aspetta. GET /api/v1/acp/coordination/wait restituisce la coda.
Premi Esegui (o ⌘/Ctrl + Invio) per firmare la richiesta a sinistra.
La prima esecuzione crea una chiave di test gratuita nel browser: circa 35 chiamate in 7 giorni, senza account. La ricevuta torna qui ed è verificata con le chiavi pubblicate, senza fidarsi di noi.
Codice
Esempio live
Una richiesta reale
Una richiesta nella forma accettata dall’API e una risposta di esempio nella forma restituita dal modulo.
Due agenti di rilascio chiedono lock:deploy/production. Uno ottiene il lease, e all’altro viene detto chi lo tiene e quando riprovare.
Un detentore andato in crash
Un agente prende un lease e muore. Il lease decade, l’allarme lo riprende e il prossimo agente in coda può chiedere di nuovo.
Rompere un deadlock
L’agente A tiene una risorsa e aspetta quella di B, mentre B aspetta quella di A. La seconda richiesta è rifiutata come deadlock con waitingOn indicato.
Frenare un’orda
Cinquanta agenti vogliono lo stesso file. Ogni rifiuto restituisce un waitMs che cresce con la coda, così i tentativi si distribuiscono invece di martellare.
Quando usare altro
Decidere se un agente può agire. Un lease dice chi tiene una risorsa, e coordination.admit dice se l’azione è permessa.
Dire ai pari che stai lavorando. Usa civics.presence per riportare lo stato e civics.claims per dichiarare cosa intendi fare.
Fare i turni nell’arco di ore. Un lease decade in secondi, quindi usa negotiate.propose per accordi più lunghi.
Prove
Garanzie
Cosa fa e cosa non fa
Un modulo è una promessa forte su una cosa circoscritta. Contaci esattamente per ciò che è.
Fa
Ogni risorsa ha una sola autorità di lease, quindi due agenti non possono tenere la stessa risorsa nello stesso momento.
Un lease mai rilasciato scade ed è ripreso, che il detentore torni o no.
Un rifiuto nomina il detentore, così la causa di un’attesa è visibile.
Un’attesa che chiuderebbe un ciclo è rifiutata come deadlock invece di restare in coda per sempre.
Non fa
Che il lavoro sia stato fatto. Un lease rilasciato dice che il detentore ha lasciato, nulla sull’esito.
Che la durata del lease sia a tua scelta. Ogni lease dura il valore predefinito, qualunque ttlMs invii un chiamante.
Che un lease regga durante una partizione. Se l’autorità non è raggiungibile la richiesta fallisce e il lease non è concesso.
Dettagli
Note di sviluppo
Prima di costruire
Le letture possono condividere
La classe di semantica della risorsa decide cosa è in conflitto. Due letture di una risorsa sicura da leggere in concorrenza non si escludono, mentre una scrittura o una cancellazione esclude tutto.
La fiducia si muove coi lease
Un rilascio alza di 0,5 il punteggio di fiducia del detentore e una scadenza senza rilascio lo abbassa di 5. Sono i due soli segnali che l’autorità di lease emette.
Una voce nel ledger
Una concessione scrive nel ledger un evento coordination.lease. La scrittura è best effort, quindi un’interruzione del ledger non ferma il lease.
Limiti e misurazione
Il lease predefinito dura 30.000 ms. La route non legge ttlMs.
L’attesa anti-stampede è il minore tra 800 ms e 25 ms raddoppiati per ogni in attesa, e al massimo 8 in attesa sono ammessi.
release accetta resource e actorDid, più un leaseId opzionale. Lo schema MCP non ha leaseId.
Le chiamate di lease non sono misurate. Solo coordination/admit conta come azione coordinata.
Accesso
API e MCP
REST e MCP
Autenticati con una chiave API del workspace come token Bearer. L’URL di base è https://api.intramedial.com.
Endpoint REST
POST/api/v1/acp/coordination/leaseChiedi un lease esclusivo su una risorsa.
POST/api/v1/acp/coordination/releaseRilascia un lease tenuto dal chiamante.
GET/api/v1/acp/coordination/waitLeggi la coda degli agenti in attesa e le coppie in deadlock.
Azioni MCP
MCPcoordination.lease.acquireChiedi un lease come azione MCP.
MCPcoordination.lease.releaseRilascia un lease come azione MCP.
MCPcoordination.waitLeggi la coda di attesa come azione MCP.