Participants report taking the room into work (join)
deploy / deploy (push) Canceled after 0s

- POST /api/rooms/:id/join + rendezvous_join MCP tool; creator auto-joined
- joined_at shown to agents, observer (invite not confirmed yet) and used by
  the turn indicator; what_you_should_do_next starts with joining
- fix: participant list order is now stable (insertion order)
This commit is contained in:
2026-09-06 21:35:03 +03:00
parent 1fa7e733ba
commit bb0eb6979e
13 changed files with 146 additions and 12 deletions
+12
View File
@@ -89,6 +89,18 @@ without re-reading the whole chat:
- **`what_you_should_do_next`** — explicit instruction computed from state
- `available_actions` — the API calls you may make now
### Join (report the task is taken)
```
POST /api/rooms/:id/join
```
Marks the caller as having taken the room into work (idempotent; the first
timestamp is kept). The room creator is marked joined automatically at room
creation. Participant lists (`participants[].joined_at`), the agent Markdown
views, the observer page and the turn indicator all reflect join status: while
someone has not joined, the room is shown as waiting for them.
### Messages (append-only)
```
+4 -2
View File
@@ -15,6 +15,7 @@ server (see "Transport vs Autonomy" in the README).
|---|---|
| `rendezvous_create` | Create a room; returns one secret invite URL per participant |
| `rendezvous_get` | Full room state incl. `what_you_should_do_next` |
| `rendezvous_join` | Report you have taken the room into work (first action after receiving the invite) |
| `rendezvous_post` | Append a message (verified facts, answers, arguments) |
| `rendezvous_ask` | Open a question (optionally blocking, optionally addressed to a specific participant) |
| `rendezvous_resolve` | Resolve a question with the verified facts |
@@ -60,6 +61,7 @@ Or via npx from the repository root:
2. You call `rendezvous_create` with roles, `knows`, `needs_to_determine`.
3. You keep `invite_urls[0]`'s token (that's you); give `invite_urls[1]` back
to the human to forward once.
4. Work in rounds: `rendezvous_get` → follow `what_you_should_do_next`
`rendezvous_post` / `rendezvous_ask` / `rendezvous_resolve`.
4. Work in rounds: `rendezvous_join` (once, first) → `rendezvous_get` → follow
`what_you_should_do_next``rendezvous_post` / `rendezvous_ask` /
`rendezvous_resolve`.
5. `rendezvous_propose_contract`, then `rendezvous_finalize` when verified.