WB Stream removed the room creation API; gen mode for wbstream no
longer works. Remove the wbstream branch from session.Gen, drop the
auto-generate prompt from srv.sh and the entrypoint fallback, and
update docs to instruct users to create rooms manually at stream.wb.ru.
- Switched getToken endpoint to /api-room-manager/v2/room/%s/connection-details
- Updated WebSocket URL to wss://rtc-el-01.wb.ru
- Updated Python PoC scripts to match new endpoints
Each auth.Provider now declares DefaultServiceURL() so callers do not
need to know service-specific endpoints. ApplyAuthDefaults fills Engine
and URL from the provider before validation runs — explicit flags always
win, and providers with no default URL require -url to be set explicitly.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Also add OLCRTC_CARRIER fallback in entrypoint for backwards compat
with existing docker-compose configs.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace all -carrier references with -auth in settings, manual, fast,
uri, and about. Update architecture diagram and repo structure table
to reflect internal/engine + internal/auth split (replaces internal/provider).
Add pkg/olcrtc section describing the public Go library API.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Dial now sets SetEndedCallback to close the pipe with ErrSessionEnded
and starts WatchConnection in a goroutine. Consumers (e.g. sing-box)
get a concrete error from Read when the session dies permanently.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add olcrtc.CreateRoom(ctx, authName) that delegates to the auth
provider's RoomCreator interface. Returns ErrRoomCreationUnsupported
for providers that don't support room creation (e.g. telemost).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add conn.go wrapping Session as net.Conn: Read from pipe fed by OnData,
Write calls engine.Send, Close drains pipe and tears down session.
Add Session.Dial(ctx) as single-call connect-and-wrap entry point.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Exposes olcrtc as an embeddable Go library via pkg/olcrtc.Session.
Two usage modes:
- Direct engine: caller supplies Engine+URL+Token, no HTTP auth flow.
- Built-in auth: caller supplies Auth+RoomID; the registered auth
provider (telemost, jazz, wbstream) resolves credentials internally.
Public surface:
New(ctx, Config) (*Session, error)
Session.Connect / Send / Close / WatchConnection
Session.CanSend / SetEndedCallback / SetShouldReconnect
RegisterDefaults() — pulls in all built-in engines + auth providers.
Also add !pkg/ exception to .gitignore (bare "olcrtc" pattern was
shadowing the new directory).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Break CLI backwards compatibility as planned for refactor/universal-carrier:
- Drop -carrier flag; add -auth (auth provider name), -engine (engine
name for -auth none), -url and -token (SFU endpoint + access token for
direct/none auth mode).
- session.Config.Carrier → Auth + Engine + URL + Token.
- session.Gen() is now generic: auth.Get(cfg.Auth).(auth.RoomCreator)
replaces the hard-coded switch on carrier names.
- Register a "none" carrier in builtin (registerDirect) that bypasses
auth and connects directly to any engine with caller-supplied URL+Token.
- auth/telemost.Provider.Issue now accepts a raw room-ID hash in addition
to a full https://telemost.yandex.ru/j/<id> URL.
- Plumb Engine/URL/Token from session.Config through server.Run,
client.Run/RunWithReady, bringUpLink, link.Config, transport.Config, and
carrier.Config so the "none" carrier has access to them end-to-end.
- Update all tests and mobile.go call sites.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>