feat(server,web,mobile): an agent sets up a link to another environment

A user asks an agent to "delegate this to my vps" without knowing any
address, so t3_environment_link needs none. The agent passes a hint from the
user's words, an environmentId when it knows the machine, or an address only
when the user gave one. The tool records a card in the thread and returns
pending at once, so no provider's tool-call timeout can close it. A machine
already linked here returns linked at once, with no card.

The card lets the user pick the machine from the ones their app knows
(preselected by the hint; "Another address…" for one it does not), and the
access (default supervised, or the agent's suggestion). The client answers
with every address it knows for that machine and a one-use pairing code,
minted there with the user's own session when it can, or pasted. The server
links through the first address that answers as that machine, never sends
the code to one that answers as another, and keeps only the matching
addresses. A machine already linked is answered with "Use this link".

The answer reaches the agent as a notification in its thread: linked (with
the environment id, label and the access chosen), declined, or failed with
the reason. The pairing code is never recorded. Stopping or archiving the
thread closes a pending card; a retry with the same clientRequestId returns
the card's current outcome. t3_environment_unlink undoes a link. Both tools
need a full-access caller and are refused for linked work.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
c961f17067Julius Marminge committed on 10/20/2026, 11:06:41 PMparent2ccff10
50 files changedLine totals unavailable