API interne du bail du moteur pour la conversation tenue par Rust

Le verrou de génération (conv.Generating) est partagé par le chat, les
tâches planifiées, le bench et l'optimiseur. Une conversation tenue par la
façade doit prendre ce verrou-là : sinon une tâche partirait vers le même
moteur en plein tour.

/internal/v1/engine/lease prend le verrou (409 avec la raison du refus et
la tâche en cours), /renew le prolonge et remonte un stop passé par le Go,
/release le rend (seulement s'il le tient encore), /engine/stop arrête un
détenteur Go. Sans renouvellement le bail expire : une façade tuée en plein
tour ne garde pas le moteur. Reset et les bascules de discussion rompent le
bail comme ils libèrent un tour Go.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016tcGfJWefW5kUGoC2wL8cv
This commit is contained in:
Claude committed 2026-10-15 09:59:16 +00:00
1 parent f15baa79aa
commit 27ce303d7f
4 files changed
+363 -1

No files matched your search

+8
View File
@@ -75,6 +75,14 @@ func withInternalAPI(next http.Handler) http.Handler {
handleInternalCrypt(w, r, true)
case "/internal/v1/crypt/open":
handleInternalCrypt(w, r, false)
case "/internal/v1/engine/lease":
handleInternalLease(w, r)
case "/internal/v1/engine/lease/renew":
handleInternalLeaseRenew(w, r)
case "/internal/v1/engine/lease/release":
handleInternalLeaseRelease(w, r)
case "/internal/v1/engine/stop":
handleInternalEngineStop(w, r)
default:
http.NotFound(w, r)
}