Add reciprocal peer mock interviews

JS
1h ago
+18019-716

Adds reciprocal peer mock interviews, so two signed-in members can practice interviewing each other. It is offered like the other features once GitHub sign-in and a Google key for the silent observer are configured, with no separate enable flag. Members are identified by GitHub login plus a nickname, matched through a LiveKit lobby or a private invite, and play two rounds with swapped roles, sharing code, tests and a hint guide. Each round ends with written human feedback, and a silent AI observer adds suggestions after the second.

Transcripts and audio are saved only if a member chooses, kept separately from the AI interview reports, readable by the two members alone, and removed on request or after 24 hours. Closed sessions, code snapshots and feedback are deleted 30 days after creation by an hourly worker.

The Gemini side-call attempt and the code workspace are moved out of the existing interview code so both modes share them; the browser half stays plain web/*.js with no build step. The commits go in that order: shared pieces, service, pages, docs, then the flag removal.

Verified with ./scripts/test.sh. The last full run failed only clippy on an unused import, since fixed; clippy and the format check pass again. Desktop clippy and cargo-deny were not run. Left out: a per-account lobby limit, observer reconnect (documented as a limitation) and problem shuffling.