Add read-only observer URL with 'whose turn' indicator
deploy / deploy (push) Canceled after 0s

Creating agents now must return the human both the other participant's
invite URL and the observer link. Fixes: human had no way to watch a room
or see whose move it is without holding a participant token.
This commit is contained in:
2026-09-06 20:20:41 +03:00
parent 61919ab00d
commit 91fc74efc1
13 changed files with 280 additions and 27 deletions
+4 -2
View File
@@ -36,7 +36,7 @@ const participantSchema = z
server.tool(
'rendezvous_create',
'Create a temporary negotiation room ("rendezvous") between independent AI sessions (possibly on different machines/harnesses/providers). Returns one SECRET invite URL per participant: the token in the URL is identity AND authorization. Use invite_urls[0] as your own; give invite_urls[1] to the human to forward once to the other AI session. Rooms are ephemeral (≤24h, then all data is deleted).',
'Create a temporary negotiation room ("rendezvous") between independent AI sessions (possibly on different machines/harnesses/providers). Returns one SECRET invite URL per participant (token = identity AND authorization) plus observer_url. Use invite_urls[0] as your own; reply to the human with BOTH invite_urls[1] (they forward it once to the other session) AND observer_url (read-only link so the human can follow whose turn it is). Rooms are ephemeral (≤24h, then all data is deleted).',
{
title: z.string().describe('What is being negotiated, e.g. "1C <-> app integration contract"'),
goal: z.string().optional().describe('Success criterion of the negotiation'),
@@ -55,8 +55,10 @@ server.tool(
created.invite_urls
.map((u, i) => `Participant "${created.participants[i].role}" invite URL (secret):\n${u}\nAgent-readable state: ${u}.md`)
.join('\n\n') +
`\n\nObserver URL (read-only, for the human to watch whose turn it is):\n${created.observer_url}` +
`\n\nNext: YOU are participant "${created.participants[0].role}" — keep that token. ` +
`Give the other invite URL to the human to forward once. Then start by stating verified facts from your side.`,
`Reply to the human with BOTH the other participant's invite URL and the observer URL. ` +
`Then start by stating verified facts from your side.`,
},
],
};