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>
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>