A focused two-column page, not a modal: the form lives where the cursor
needs it, the contextual help and security footnote live where the eye
naturally drifts. After the form is submitted the same URL renders the
result state — token + install command — so the operator never loses
their place.
Backed by POST /api/enrollment-tokens
(P1-32). Repo creds become an AEAD blob bound to the token hash;
ConsumeEnrollmentToken rebinds them
under the new host_id and the WS push lands them on the agent.
Mints a one-time enrolment token (TTL 1 hour) and binds the repo credentials to it.
The token can only be used once — generate a fresh one if it expires or you typed
something wrong.