Model meetings as provider-agnostic

Featurekamo-shared-library
Shipped
August 5, 2026 at 6:35 AM UTC
Author
Kamo
Commit
e9c987e

Kamo Meets was the only possible backend: OrgMeetConfig was a flat Meet settings bag and a MeetingRecord held nothing but a room name. This adds the schema for running an organization on Zoom or Microsoft Teams instead. - meet.provider: MeetingProviderType / MeetingProviderStatus, the per-org OrgMeetingProviderEntity (encrypted credential blob, last-verified state) and OrgMeetingOAuthTokenEntity, mirroring the email_provider package that already backs the email provider abstraction. - MeetingRecord gains the hosting provider's own identity — remote meeting id, join and host URLs, passcode, host account — so a meeting can be rejoined and reconciled whoever hosts it. - MeetingRecording gains providerRecordingId, which keeps the pull of a remote provider's cloud recording idempotent. - OrgMeetConfig gains the settings Zoom and Teams support that a Meet-only config had no reason to carry: join-before-host, passcode shaping, lobby bypass scope, presenter and attendee controls, cloud recording, transcripts, provider-sent invitations, and the fallback host meetings are created under when a member has no account on the provider. Every org with no provider row resolves to KAMO_MEET, so this is inert until an admin chooses otherwise. Columns were applied to production by KamoInitializer before this landed. PlatformOAuthProviderType gains ZOOM(9) for the Zoom Marketplace app; Teams meetings reuse MICROSOFT(3). Its guard test moves with it, since an enum and the test pinning its persisted ids cannot land separately.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing