@ai-matrx/meet 0.11.41 → 0.11.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/dist/{collab-XY6Xj1dG.d.cts → collab-BNJNgXFB.d.cts} +11 -2
- package/dist/{collab-XY6Xj1dG.d.ts → collab-BNJNgXFB.d.ts} +11 -2
- package/dist/{components-4f9Mf8fz.d.cts → components-BDtGzHf4.d.ts} +4 -2
- package/dist/{components-Cwep2NYU.d.ts → components-BxK993iW.d.cts} +4 -2
- package/dist/core.cjs +190 -25
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +58 -11
- package/dist/core.d.ts +58 -11
- package/dist/core.js +190 -25
- package/dist/core.js.map +1 -1
- package/dist/index.cjs +190 -25
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +190 -25
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +469 -66
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +21 -4
- package/dist/react.d.ts +21 -4
- package/dist/react.js +469 -66
- package/dist/react.js.map +1 -1
- package/dist/skins/meet.cjs +326 -48
- package/dist/skins/meet.cjs.map +1 -1
- package/dist/skins/meet.d.cts +5 -3
- package/dist/skins/meet.d.ts +5 -3
- package/dist/skins/meet.js +326 -48
- package/dist/skins/meet.js.map +1 -1
- package/dist/styles.css +12 -0
- package/package.json +3 -3
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { ATTENDANCE_CSV_HEADER, AnnounceResult, ApplyRoomEventArgs, AskArgs, AttendanceKind, AttendanceRow, AudioProcessing, BrowserFamily, CALL_INVITE_KIND, CALL_INVITE_VERSION, CONSENT_NOTICE_ATTRIBUTE, CallCenter, CallCenterOptions, CallInviteHandlerOptions, CallInvitePayload, CallOutcomePhase, CollabAction, CollabRequest, CollabResult, CollabRuntime, CollabStoreLike, ConnectionPolicy, ConnectionRegion, ConnectionSupervisor, ConnectionSupervisorOptions, CreateCallInviteInput, CreateMeetingInput, DATA_TOPICS, DEFAULT_CONNECTION_POLICY, DEFAULT_EFFECTS, DEFAULT_LEAVE_POLICY, DEFAULT_PAGE_SIZE, DataTopic, DeviceKind, DeviceManager, DeviceManagerOptions, DeviceNotice, DeviceOffer, DeviceSnapshot, DeviceStorage, DeviceUnavailableReason, DriverConnectionState, DriverParticipant, DriverTrackKind, DriverTranscription, END_MEETING_NOT_SERVED, EffectsStorage, EndMeetingResult, ExitInput, ExitPhase, ExitResolution, ExitServerWord, FollowUpDraft, FollowUpRecipient, FollowUpSendResult, GUEST_RECORD_ACCESS_CHOICES, GUEST_RECORD_ACCESS_LEVELS, GUEST_RECORD_ACCESS_METADATA_KEY, GUEST_RECORD_NOT_SHARED, Ghost, GuestRecordAccess, GuestRecordAccessResolution, GuestRecordAccessSetting, HostLeavePrompt, IDLE_MEDIA, IDLE_MEDIA_REGION, IDLE_PHASES, IDLE_TRACK, InRoomClient, InRoomClientOptions, JOIN_REFUSAL_REASONS, JoinRefusalReason, JoinRequest, LISTEN_ONLY_NOTICE, LIVEKIT_BASE_DELAYS_MS, LIVE_PHASES, LeaveChoice, LeavePolicy, LibraryRecording, LiveKitDriverOptions, LocalMediaState, LocalTrackState, MEETING_INVITE_KIND, MEETING_INVITE_VERSION, MEETING_PASS_HEADER, MEETING_RECORD_GRACE_MS, MEET_ANSWER_CONTEXT_EVENT, MEET_ANSWER_EVENTS, MEET_EVENTS, MEET_REACTIONS, MEET_ROUTES, MEET_SCHEMA, MODERATION_ACTIONS, MediaDevicesLike, MediaEffects, MediaKind, MediaPlatform, MediaRegionState, MediaSupervisor, MediaSupervisorOptions, MediaUnavailable, MeetAi, MeetAiAnswer, MeetAiOptions, MeetAnswerCoverage, MeetDevice, MeetError, MeetErrorCode, MeetEvent, MeetGrants, MeetObservation, MeetPatch, MeetPhase, MeetRepository, MeetRoomDriver, MeetSnapshot, MeetStore, MeetingChatHistory, MeetingInviteHandlerOptions, MeetingInvitePayload, MeetingRecordAnswer, MeetingRecordBundle, MeetingRecordCache, MeetingRecordChange, MeetingRecordFailure, MeetingRecordParts, MeetingRecordRestriction, MeetingRecordRestrictionNotice, MeetingRecordState, MeetingSearchHit, MeetingSearchSource, MeetingSession, MeetingSessionOptions, ModerationAction, ModerationNotice, ModerationRequest, ModerationResult, NOTE_TAKER_IDENTITY_PREFIX, NOTE_TAKER_METADATA_KEY, NO_GRANTS, NO_SHARE, NameBook, NetworkPort, NoteTakerDispatch, NoteTakerRefusal, NoteTakerStatus, ObserveInput, ObservedConnection, ObservedPhase, OsFamily, PARTICIPANT_CAN_RECORD_ATTRIBUTE, PARTICIPANT_HAND_ATTRIBUTE, PARTICIPANT_ROLE_ATTRIBUTE, PARTICIPANT_STANDING_ATTRIBUTE, PermissionReading, PhaseEvent, PhaseEventType, PlatformDevice, REACTION_TTL_MS, REFUSED_ABSENCE, RESUME_WINDOW_MS, ROOM_EVENTS, ROOM_EVENT_PREFIX, RPCS, ReconnectPolicyLike, ReconnectPolicyOptions, RecordingController, RecordingControllerOptions, RepositoryOptions, ResumeMarker, ResumeStorage, RoomChatMessage, RoomDriverFactory, RoomDriverHandlers, RoomEngine, RoomEngineOptions, RoomEventOutcome, RoomEventTopic, RoomReaction, RoomToken, RoomTokenStorage, ScheduleMeetingInput, ShareRegion, Stage, StageArgs, TABLES, TRANSCRIPTION_ATTRIBUTES, TRANSCRIPTION_TOPIC, TokenClient, TokenClientOptions, TokenRequest, TranscriptBlock, TranscriptFormat, TranscriptMatch, VideoEffect, WAITING_PHASES, WrapUpStatus, absenceSentence, activeWrapUpSummary, activityAttention, admissionPhase, announceMeeting, applyRoomEvent, assembleMeetingRecord, attendanceCsv, attendanceReport, attendanceTotals, attendeeKey, autoRejoinDelayMs, availableActivities, callInviteAction, callInviteText, callStateLabel, canModerate, canModerateParticipant, canTransition, captionSegment, changesPatch, classifyDeviceFailure, clockPosition, computeStage, connectionPolicyFrom, countLabel, createCallCenter, createCallInviteHandler, createConnectionSupervisor, createDeviceManager, createInRoomClient, createLiveKitDriver, createMediaSupervisor, createMeetAi, createMeetRepository, createMeetStore, createMeetingInviteHandler, createMeetingRecordCache, createMeetingSession, createMemoryDeviceStorage, createReachabilityProbe, createReconnectPolicy, createRecordingController, createRoomEngine, createTokenClient, createWebDeviceStorage, createWebEffectsStorage, createWebNetworkPort, createWebResumeStorage, createWebRoomTokenStorage, detectBrowser, detectOs, deviceChipLabel, deviceFixSteps, deviceNoticeCode, deviceUnavailableReason, displayNameFor, gridColumns, groupTranscript, guestRecordAccessExplanation, guestRecordAccessLabel, guestRecordAccessSetting, hasEnded, hostUserIds, httpUrlOf, invalidResponse, isGuestIdentity, isJoinRefusalReason, isListenOnly, isLivePhase, isNoteTaker, isRealName, isRefusedPhase, isRoomEventTopic, isUnannouncedDeparture, isWaitingPhase, learnName, learnNames, leaveChoices, leavePolicyFrom, listenOnlyNotice, loadFollowUpDraft, loadGuestMeetingRecord, loadMeetingChat, loadMeetingRecord, loadMeetingRecordParts, mapConnectionState, mapQuality, meetingInviteAction, meetingLength, meetingLink, meetingPassHeaders, meetingPath, meetingSlug, meetingTopic, meetingWhen, mergeCaption, mergeGhosts, mergeRecord, microphoneNoticeCode, moveToRoom, nextPhase, nextTranslationBatch, normalizeDeviceError, normalizeMeetError, normalizeSpoken, noteTakerIdentity, noteTakerLabel, noteTakerParticipant, noteTakerStatus, notesDocument, observeMeeting, observedDevice, observedPhase, observedQuality, orderParticipants, parseRoomToken, participantAttributes, participantSummary, performCollab, playableRecordingFileId, projectInvitee, projectLibraryRecording, projectNote, projectOccurrence, projectOverride, projectParticipant, projectRsvpInvitation, projectSearchHit, projectSegment, projectUpcoming, pushMeetingToGoogleCalendar, readServerRefusal, readableTranscript, reasonOf, recordingLabel, recordingNotice, recordingOffsetMs, refusalPhase, rememberedMeetingPass, resolveExit, roleOf, roomTopic, rootAttributes, searchTranscript, sendFollowUp, setCaptionLanguage, setGuestRecordAccess, settingsPatch, snapshotParticipant, snippetRuns, staticObservation, summarizeMeetingRecordRestrictions, takeMoveRequest, takePanelRequest, transcriptDocument, unavailableFrom, uniqueAttendees, untranslatedLines, userTopic, wasRefused, webMediaPlatform, wrapUpStatus } from './core.cjs';
|
|
2
|
-
export { A as AccessTokenSource, k as AdmissionState, l as CAPTION_LANGUAGES, m as CallId, d as CallInvite, f as CallMode, n as CallState, o as CallablePerson, C as CollabPanel, j as CollabSnapshot, p as ConnectionQuality, E as EMPTY_COLLAB, F as FILE_SESSION_PATH, I as InviteeInput, q as InviteeRole, J as JsonObject, r as JsonValue, L as LobbyEntry, b as MeetApi, s as MeetApiOptions, t as MeetApiRequest, u as MeetAppFocus, v as MeetBreakoutBroadcast, w as MeetBreakoutPlan, x as MeetBreakoutRoom, y as MeetCollabSettings, z as MeetFileMedia, c as MeetIdentity, a as MeetParticipant, B as MeetPoll, D as MeetPollOption, G as MeetPollState, H as MeetQuestion, K as MeetQuestionState, N as MeetStroke, Q as MeetingActivities, i as MeetingAppPanel, V as MeetingAttendee, X as MeetingChanges, h as MeetingId, Y as MeetingInvitee, Z as MeetingKind, g as MeetingNote, _ as MeetingNoteKind, $ as MeetingOccurrence, M as MeetingRecord, a0 as MeetingSettings, a1 as NoteTakerState, a2 as ORGANIZATION_HEADER, a3 as ObserversVisibleTo, a4 as OccurrenceOverride, a5 as OccurrenceState, O as OrganizationId, P as ParticipantIdentity, e as ParticipantRole, a6 as ParticipantStanding, a7 as ROLE_RANK, a8 as RecordingPolicy, a9 as RecordingRecord, aa as RecordingState, R as RoomName, ab as RsvpAnswer, ac as RsvpInvitation, ad as RsvpState, S as StageLayout, ae as TranscriptSegment, T as TranscriptSource, af as UpcomingOccurrence, U as UserId, W as WrapUpAnnouncement, ag as appPanelOf, ah as applyCollabPacket, ai as asCallId, aj as asMeetingId, ak as asOrganizationId, al as asParticipantIdentity, am as asRoomName, an as asUserId, ao as assignedRoom, ap as autoAssign, aq as
|
|
2
|
+
export { A as AccessTokenSource, k as AdmissionState, l as CAPTION_LANGUAGES, m as CallId, d as CallInvite, f as CallMode, n as CallState, o as CallablePerson, C as CollabPanel, j as CollabSnapshot, p as ConnectionQuality, E as EMPTY_COLLAB, F as FILE_SESSION_PATH, I as InviteeInput, q as InviteeRole, J as JsonObject, r as JsonValue, L as LobbyEntry, b as MeetApi, s as MeetApiOptions, t as MeetApiRequest, u as MeetAppFocus, v as MeetBreakoutBroadcast, w as MeetBreakoutPlan, x as MeetBreakoutRoom, y as MeetCollabSettings, z as MeetFileMedia, c as MeetIdentity, a as MeetParticipant, B as MeetPoll, D as MeetPollOption, G as MeetPollState, H as MeetQuestion, K as MeetQuestionState, N as MeetStroke, Q as MeetingActivities, i as MeetingAppPanel, V as MeetingAttendee, X as MeetingChanges, h as MeetingId, Y as MeetingInvitee, Z as MeetingKind, g as MeetingNote, _ as MeetingNoteKind, $ as MeetingOccurrence, M as MeetingRecord, a0 as MeetingSettings, a1 as NoteTakerState, a2 as ORGANIZATION_HEADER, a3 as ObserversVisibleTo, a4 as OccurrenceOverride, a5 as OccurrenceState, O as OrganizationId, P as ParticipantIdentity, e as ParticipantRole, a6 as ParticipantStanding, a7 as ROLE_RANK, a8 as RecordingPolicy, a9 as RecordingRecord, aa as RecordingState, R as RoomName, ab as RsvpAnswer, ac as RsvpInvitation, ad as RsvpState, S as StageLayout, ae as TranscriptSegment, T as TranscriptSource, af as UpcomingOccurrence, U as UserId, W as WrapUpAnnouncement, ag as appPanelOf, ah as applyCollabPacket, ai as asCallId, aj as asMeetingId, ak as asOrganizationId, al as asParticipantIdentity, am as asRoomName, an as asUserId, ao as assignedRoom, ap as autoAssign, aq as breakoutClosingMs, ar as breakoutRemainingMs, as as captureHeldOf, at as collabFromState, au as createMeetApi, av as defaultCaptionLanguage, aw as fileDownloadPath, ax as focusFromRow, ay as isGuest, az as isHostRole, aA as isLinkFollower, aB as isObserverRole, aC as loadMeetingActivities, aD as scheduleSettingsPatch, aE as withItem } from './collab-BNJNgXFB.cjs';
|
|
3
3
|
import '@ai-matrx/realtime';
|
|
4
4
|
import '@ai-matrx/messaging';
|
|
5
5
|
import 'livekit-client';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { ATTENDANCE_CSV_HEADER, AnnounceResult, ApplyRoomEventArgs, AskArgs, AttendanceKind, AttendanceRow, AudioProcessing, BrowserFamily, CALL_INVITE_KIND, CALL_INVITE_VERSION, CONSENT_NOTICE_ATTRIBUTE, CallCenter, CallCenterOptions, CallInviteHandlerOptions, CallInvitePayload, CallOutcomePhase, CollabAction, CollabRequest, CollabResult, CollabRuntime, CollabStoreLike, ConnectionPolicy, ConnectionRegion, ConnectionSupervisor, ConnectionSupervisorOptions, CreateCallInviteInput, CreateMeetingInput, DATA_TOPICS, DEFAULT_CONNECTION_POLICY, DEFAULT_EFFECTS, DEFAULT_LEAVE_POLICY, DEFAULT_PAGE_SIZE, DataTopic, DeviceKind, DeviceManager, DeviceManagerOptions, DeviceNotice, DeviceOffer, DeviceSnapshot, DeviceStorage, DeviceUnavailableReason, DriverConnectionState, DriverParticipant, DriverTrackKind, DriverTranscription, END_MEETING_NOT_SERVED, EffectsStorage, EndMeetingResult, ExitInput, ExitPhase, ExitResolution, ExitServerWord, FollowUpDraft, FollowUpRecipient, FollowUpSendResult, GUEST_RECORD_ACCESS_CHOICES, GUEST_RECORD_ACCESS_LEVELS, GUEST_RECORD_ACCESS_METADATA_KEY, GUEST_RECORD_NOT_SHARED, Ghost, GuestRecordAccess, GuestRecordAccessResolution, GuestRecordAccessSetting, HostLeavePrompt, IDLE_MEDIA, IDLE_MEDIA_REGION, IDLE_PHASES, IDLE_TRACK, InRoomClient, InRoomClientOptions, JOIN_REFUSAL_REASONS, JoinRefusalReason, JoinRequest, LISTEN_ONLY_NOTICE, LIVEKIT_BASE_DELAYS_MS, LIVE_PHASES, LeaveChoice, LeavePolicy, LibraryRecording, LiveKitDriverOptions, LocalMediaState, LocalTrackState, MEETING_INVITE_KIND, MEETING_INVITE_VERSION, MEETING_PASS_HEADER, MEETING_RECORD_GRACE_MS, MEET_ANSWER_CONTEXT_EVENT, MEET_ANSWER_EVENTS, MEET_EVENTS, MEET_REACTIONS, MEET_ROUTES, MEET_SCHEMA, MODERATION_ACTIONS, MediaDevicesLike, MediaEffects, MediaKind, MediaPlatform, MediaRegionState, MediaSupervisor, MediaSupervisorOptions, MediaUnavailable, MeetAi, MeetAiAnswer, MeetAiOptions, MeetAnswerCoverage, MeetDevice, MeetError, MeetErrorCode, MeetEvent, MeetGrants, MeetObservation, MeetPatch, MeetPhase, MeetRepository, MeetRoomDriver, MeetSnapshot, MeetStore, MeetingChatHistory, MeetingInviteHandlerOptions, MeetingInvitePayload, MeetingRecordAnswer, MeetingRecordBundle, MeetingRecordCache, MeetingRecordChange, MeetingRecordFailure, MeetingRecordParts, MeetingRecordRestriction, MeetingRecordRestrictionNotice, MeetingRecordState, MeetingSearchHit, MeetingSearchSource, MeetingSession, MeetingSessionOptions, ModerationAction, ModerationNotice, ModerationRequest, ModerationResult, NOTE_TAKER_IDENTITY_PREFIX, NOTE_TAKER_METADATA_KEY, NO_GRANTS, NO_SHARE, NameBook, NetworkPort, NoteTakerDispatch, NoteTakerRefusal, NoteTakerStatus, ObserveInput, ObservedConnection, ObservedPhase, OsFamily, PARTICIPANT_CAN_RECORD_ATTRIBUTE, PARTICIPANT_HAND_ATTRIBUTE, PARTICIPANT_ROLE_ATTRIBUTE, PARTICIPANT_STANDING_ATTRIBUTE, PermissionReading, PhaseEvent, PhaseEventType, PlatformDevice, REACTION_TTL_MS, REFUSED_ABSENCE, RESUME_WINDOW_MS, ROOM_EVENTS, ROOM_EVENT_PREFIX, RPCS, ReconnectPolicyLike, ReconnectPolicyOptions, RecordingController, RecordingControllerOptions, RepositoryOptions, ResumeMarker, ResumeStorage, RoomChatMessage, RoomDriverFactory, RoomDriverHandlers, RoomEngine, RoomEngineOptions, RoomEventOutcome, RoomEventTopic, RoomReaction, RoomToken, RoomTokenStorage, ScheduleMeetingInput, ShareRegion, Stage, StageArgs, TABLES, TRANSCRIPTION_ATTRIBUTES, TRANSCRIPTION_TOPIC, TokenClient, TokenClientOptions, TokenRequest, TranscriptBlock, TranscriptFormat, TranscriptMatch, VideoEffect, WAITING_PHASES, WrapUpStatus, absenceSentence, activeWrapUpSummary, activityAttention, admissionPhase, announceMeeting, applyRoomEvent, assembleMeetingRecord, attendanceCsv, attendanceReport, attendanceTotals, attendeeKey, autoRejoinDelayMs, availableActivities, callInviteAction, callInviteText, callStateLabel, canModerate, canModerateParticipant, canTransition, captionSegment, changesPatch, classifyDeviceFailure, clockPosition, computeStage, connectionPolicyFrom, countLabel, createCallCenter, createCallInviteHandler, createConnectionSupervisor, createDeviceManager, createInRoomClient, createLiveKitDriver, createMediaSupervisor, createMeetAi, createMeetRepository, createMeetStore, createMeetingInviteHandler, createMeetingRecordCache, createMeetingSession, createMemoryDeviceStorage, createReachabilityProbe, createReconnectPolicy, createRecordingController, createRoomEngine, createTokenClient, createWebDeviceStorage, createWebEffectsStorage, createWebNetworkPort, createWebResumeStorage, createWebRoomTokenStorage, detectBrowser, detectOs, deviceChipLabel, deviceFixSteps, deviceNoticeCode, deviceUnavailableReason, displayNameFor, gridColumns, groupTranscript, guestRecordAccessExplanation, guestRecordAccessLabel, guestRecordAccessSetting, hasEnded, hostUserIds, httpUrlOf, invalidResponse, isGuestIdentity, isJoinRefusalReason, isListenOnly, isLivePhase, isNoteTaker, isRealName, isRefusedPhase, isRoomEventTopic, isUnannouncedDeparture, isWaitingPhase, learnName, learnNames, leaveChoices, leavePolicyFrom, listenOnlyNotice, loadFollowUpDraft, loadGuestMeetingRecord, loadMeetingChat, loadMeetingRecord, loadMeetingRecordParts, mapConnectionState, mapQuality, meetingInviteAction, meetingLength, meetingLink, meetingPassHeaders, meetingPath, meetingSlug, meetingTopic, meetingWhen, mergeCaption, mergeGhosts, mergeRecord, microphoneNoticeCode, moveToRoom, nextPhase, nextTranslationBatch, normalizeDeviceError, normalizeMeetError, normalizeSpoken, noteTakerIdentity, noteTakerLabel, noteTakerParticipant, noteTakerStatus, notesDocument, observeMeeting, observedDevice, observedPhase, observedQuality, orderParticipants, parseRoomToken, participantAttributes, participantSummary, performCollab, playableRecordingFileId, projectInvitee, projectLibraryRecording, projectNote, projectOccurrence, projectOverride, projectParticipant, projectRsvpInvitation, projectSearchHit, projectSegment, projectUpcoming, pushMeetingToGoogleCalendar, readServerRefusal, readableTranscript, reasonOf, recordingLabel, recordingNotice, recordingOffsetMs, refusalPhase, rememberedMeetingPass, resolveExit, roleOf, roomTopic, rootAttributes, searchTranscript, sendFollowUp, setCaptionLanguage, setGuestRecordAccess, settingsPatch, snapshotParticipant, snippetRuns, staticObservation, summarizeMeetingRecordRestrictions, takeMoveRequest, takePanelRequest, transcriptDocument, unavailableFrom, uniqueAttendees, untranslatedLines, userTopic, wasRefused, webMediaPlatform, wrapUpStatus } from './core.js';
|
|
2
|
-
export { A as AccessTokenSource, k as AdmissionState, l as CAPTION_LANGUAGES, m as CallId, d as CallInvite, f as CallMode, n as CallState, o as CallablePerson, C as CollabPanel, j as CollabSnapshot, p as ConnectionQuality, E as EMPTY_COLLAB, F as FILE_SESSION_PATH, I as InviteeInput, q as InviteeRole, J as JsonObject, r as JsonValue, L as LobbyEntry, b as MeetApi, s as MeetApiOptions, t as MeetApiRequest, u as MeetAppFocus, v as MeetBreakoutBroadcast, w as MeetBreakoutPlan, x as MeetBreakoutRoom, y as MeetCollabSettings, z as MeetFileMedia, c as MeetIdentity, a as MeetParticipant, B as MeetPoll, D as MeetPollOption, G as MeetPollState, H as MeetQuestion, K as MeetQuestionState, N as MeetStroke, Q as MeetingActivities, i as MeetingAppPanel, V as MeetingAttendee, X as MeetingChanges, h as MeetingId, Y as MeetingInvitee, Z as MeetingKind, g as MeetingNote, _ as MeetingNoteKind, $ as MeetingOccurrence, M as MeetingRecord, a0 as MeetingSettings, a1 as NoteTakerState, a2 as ORGANIZATION_HEADER, a3 as ObserversVisibleTo, a4 as OccurrenceOverride, a5 as OccurrenceState, O as OrganizationId, P as ParticipantIdentity, e as ParticipantRole, a6 as ParticipantStanding, a7 as ROLE_RANK, a8 as RecordingPolicy, a9 as RecordingRecord, aa as RecordingState, R as RoomName, ab as RsvpAnswer, ac as RsvpInvitation, ad as RsvpState, S as StageLayout, ae as TranscriptSegment, T as TranscriptSource, af as UpcomingOccurrence, U as UserId, W as WrapUpAnnouncement, ag as appPanelOf, ah as applyCollabPacket, ai as asCallId, aj as asMeetingId, ak as asOrganizationId, al as asParticipantIdentity, am as asRoomName, an as asUserId, ao as assignedRoom, ap as autoAssign, aq as
|
|
2
|
+
export { A as AccessTokenSource, k as AdmissionState, l as CAPTION_LANGUAGES, m as CallId, d as CallInvite, f as CallMode, n as CallState, o as CallablePerson, C as CollabPanel, j as CollabSnapshot, p as ConnectionQuality, E as EMPTY_COLLAB, F as FILE_SESSION_PATH, I as InviteeInput, q as InviteeRole, J as JsonObject, r as JsonValue, L as LobbyEntry, b as MeetApi, s as MeetApiOptions, t as MeetApiRequest, u as MeetAppFocus, v as MeetBreakoutBroadcast, w as MeetBreakoutPlan, x as MeetBreakoutRoom, y as MeetCollabSettings, z as MeetFileMedia, c as MeetIdentity, a as MeetParticipant, B as MeetPoll, D as MeetPollOption, G as MeetPollState, H as MeetQuestion, K as MeetQuestionState, N as MeetStroke, Q as MeetingActivities, i as MeetingAppPanel, V as MeetingAttendee, X as MeetingChanges, h as MeetingId, Y as MeetingInvitee, Z as MeetingKind, g as MeetingNote, _ as MeetingNoteKind, $ as MeetingOccurrence, M as MeetingRecord, a0 as MeetingSettings, a1 as NoteTakerState, a2 as ORGANIZATION_HEADER, a3 as ObserversVisibleTo, a4 as OccurrenceOverride, a5 as OccurrenceState, O as OrganizationId, P as ParticipantIdentity, e as ParticipantRole, a6 as ParticipantStanding, a7 as ROLE_RANK, a8 as RecordingPolicy, a9 as RecordingRecord, aa as RecordingState, R as RoomName, ab as RsvpAnswer, ac as RsvpInvitation, ad as RsvpState, S as StageLayout, ae as TranscriptSegment, T as TranscriptSource, af as UpcomingOccurrence, U as UserId, W as WrapUpAnnouncement, ag as appPanelOf, ah as applyCollabPacket, ai as asCallId, aj as asMeetingId, ak as asOrganizationId, al as asParticipantIdentity, am as asRoomName, an as asUserId, ao as assignedRoom, ap as autoAssign, aq as breakoutClosingMs, ar as breakoutRemainingMs, as as captureHeldOf, at as collabFromState, au as createMeetApi, av as defaultCaptionLanguage, aw as fileDownloadPath, ax as focusFromRow, ay as isGuest, az as isHostRole, aA as isLinkFollower, aB as isObserverRole, aC as loadMeetingActivities, aD as scheduleSettingsPatch, aE as withItem } from './collab-BNJNgXFB.js';
|
|
3
3
|
import '@ai-matrx/realtime';
|
|
4
4
|
import '@ai-matrx/messaging';
|
|
5
5
|
import 'livekit-client';
|
package/dist/index.js
CHANGED
|
@@ -632,6 +632,8 @@ var MEET_ROUTES = {
|
|
|
632
632
|
noteTakerStop: "/api/v1/meet/agent/stop",
|
|
633
633
|
/** In-meeting Q&A. Streams NDJSON; body is `{meeting_id, question}` only. */
|
|
634
634
|
intelligenceAsk: "/api/v1/meet/intelligence/ask",
|
|
635
|
+
/** Anyone in the meeting (guests with the room pass included) asks for captions for themselves. */
|
|
636
|
+
noteTakerCaptions: "/api/v1/meet/agent/captions",
|
|
635
637
|
/** A host ends the meeting for everyone. Served by MRI-A6. */
|
|
636
638
|
meetingEnd: "/api/v1/meet/end",
|
|
637
639
|
/**
|
|
@@ -778,7 +780,8 @@ function parseRoomToken(body, roomName) {
|
|
|
778
780
|
breakoutRoomId: readString(payload, "breakout_room_id") ?? null,
|
|
779
781
|
observersVisibleTo: readString(payload, "observers_visible_to") === "hosts" ? "hosts" : "everyone",
|
|
780
782
|
connectionPolicy: connectionPolicyFrom(payload["connection_policy"]),
|
|
781
|
-
leavePolicy: leavePolicyFrom(payload["leave_policy"])
|
|
783
|
+
leavePolicy: leavePolicyFrom(payload["leave_policy"]),
|
|
784
|
+
canReclaim: payload["can_reclaim"] === true
|
|
782
785
|
};
|
|
783
786
|
}
|
|
784
787
|
function createTokenClient(options) {
|
|
@@ -1240,6 +1243,42 @@ function createMeetAi(options) {
|
|
|
1240
1243
|
},
|
|
1241
1244
|
"meet.ai.startNoteTaker"
|
|
1242
1245
|
),
|
|
1246
|
+
requestCaptions: async ({ meetingId }) => {
|
|
1247
|
+
const roomToken = options.resolveRoomToken?.() ?? null;
|
|
1248
|
+
const operation = "meet.ai.requestCaptions";
|
|
1249
|
+
try {
|
|
1250
|
+
const response = await send({
|
|
1251
|
+
path: MEET_ROUTES.noteTakerCaptions,
|
|
1252
|
+
body: { meeting_id: meetingId },
|
|
1253
|
+
operation,
|
|
1254
|
+
requireAuth: roomToken === null,
|
|
1255
|
+
...roomToken !== null ? { headers: { [MEETING_PASS_HEADER]: roomToken } } : {}
|
|
1256
|
+
});
|
|
1257
|
+
if (!response.ok) {
|
|
1258
|
+
options.store.patch({ captionsRefusal: await refusalFor(response, operation) });
|
|
1259
|
+
return;
|
|
1260
|
+
}
|
|
1261
|
+
let payload = null;
|
|
1262
|
+
try {
|
|
1263
|
+
payload = await response.json();
|
|
1264
|
+
} catch {
|
|
1265
|
+
payload = null;
|
|
1266
|
+
}
|
|
1267
|
+
const row = typeof payload === "object" && payload !== null ? payload : {};
|
|
1268
|
+
const detail = typeof row["detail"] === "string" ? row["detail"] : "";
|
|
1269
|
+
options.store.patch({
|
|
1270
|
+
captionsRefusal: row["dispatched"] === true ? null : { status: 200, reason: detail, remedy: "" }
|
|
1271
|
+
});
|
|
1272
|
+
} catch (error) {
|
|
1273
|
+
options.store.patch({
|
|
1274
|
+
captionsRefusal: {
|
|
1275
|
+
status: 0,
|
|
1276
|
+
reason: error.message,
|
|
1277
|
+
remedy: error.remedy ?? ""
|
|
1278
|
+
}
|
|
1279
|
+
});
|
|
1280
|
+
}
|
|
1281
|
+
},
|
|
1243
1282
|
stopNoteTaker: ({ meetingId }) => dispatch(
|
|
1244
1283
|
MEET_ROUTES.noteTakerStop,
|
|
1245
1284
|
{ meeting_id: meetingId },
|
|
@@ -1278,7 +1317,7 @@ function exactNoteTakerParticipant(meeting, participants) {
|
|
|
1278
1317
|
}
|
|
1279
1318
|
function noteTakerStatus(args) {
|
|
1280
1319
|
const present = exactNoteTakerParticipant(args.meeting, args.participants) !== null;
|
|
1281
|
-
const raw = args.meeting?.metadata[NOTE_TAKER_METADATA_KEY];
|
|
1320
|
+
const raw = args.meeting?.metadata?.[NOTE_TAKER_METADATA_KEY];
|
|
1282
1321
|
const row = typeof raw === "object" && raw !== null && !Array.isArray(raw) ? raw : {};
|
|
1283
1322
|
const recorded = readState(row["state"]);
|
|
1284
1323
|
const detail = typeof row["reason"] === "string" && row["reason"].length > 0 ? row["reason"] : null;
|
|
@@ -3011,6 +3050,8 @@ function planFromRow(row) {
|
|
|
3011
3050
|
minutes: num2(row["minutes"]) ?? 0,
|
|
3012
3051
|
openedAt: str(row["opened_at"]),
|
|
3013
3052
|
endsAt: str(row["ends_at"]),
|
|
3053
|
+
closingAt: str(row["closing_at"]),
|
|
3054
|
+
moveMode: row["move_mode"] === "auto" ? "auto" : "invite",
|
|
3014
3055
|
closedAt: str(row["closed_at"]),
|
|
3015
3056
|
broadcasts: (Array.isArray(row["broadcasts"]) ? row["broadcasts"] : []).map(broadcastFrom).filter((b) => b !== null)
|
|
3016
3057
|
};
|
|
@@ -3162,9 +3203,17 @@ function autoAssign(identities, rooms, exclude = []) {
|
|
|
3162
3203
|
return out;
|
|
3163
3204
|
}
|
|
3164
3205
|
function breakoutRemainingMs(plan, now) {
|
|
3165
|
-
if (plan === null || plan.state !== "open"
|
|
3166
|
-
const
|
|
3167
|
-
|
|
3206
|
+
if (plan === null || plan.state !== "open") return null;
|
|
3207
|
+
const ends = [plan.endsAt, plan.closingAt].map((stamp) => stamp === null ? Number.NaN : Date.parse(stamp)).filter((time) => !Number.isNaN(time));
|
|
3208
|
+
if (ends.length === 0) return null;
|
|
3209
|
+
return Math.max(0, Math.min(...ends) - now);
|
|
3210
|
+
}
|
|
3211
|
+
var BREAKOUT_COUNTDOWN_MS = 3e4;
|
|
3212
|
+
function breakoutClosingMs(plan, now) {
|
|
3213
|
+
if (plan === null || plan.state !== "open") return null;
|
|
3214
|
+
const remaining = breakoutRemainingMs(plan, now);
|
|
3215
|
+
if (remaining === null) return null;
|
|
3216
|
+
return plan.closingAt !== null || remaining <= BREAKOUT_COUNTDOWN_MS ? remaining : null;
|
|
3168
3217
|
}
|
|
3169
3218
|
function defaultCaptionLanguage(settings, viewerLanguage) {
|
|
3170
3219
|
const configured = settings?.captionTranslationLanguage.trim() ?? "";
|
|
@@ -3411,6 +3460,47 @@ function recordingLabel(state) {
|
|
|
3411
3460
|
}
|
|
3412
3461
|
}
|
|
3413
3462
|
|
|
3463
|
+
// src/core/live-policy.ts
|
|
3464
|
+
var DEFAULT_LIVE_POLICY = {
|
|
3465
|
+
chatMode: "everyone",
|
|
3466
|
+
avLock: "off",
|
|
3467
|
+
timeLimitMinutes: 0,
|
|
3468
|
+
timeLimitWarningMinutes: 5,
|
|
3469
|
+
recordingConsent: "notice"
|
|
3470
|
+
};
|
|
3471
|
+
function oneOf(value, allowed, fallback) {
|
|
3472
|
+
return typeof value === "string" && allowed.includes(value) ? value : fallback;
|
|
3473
|
+
}
|
|
3474
|
+
function whole(value, fallback) {
|
|
3475
|
+
const n = typeof value === "number" ? value : typeof value === "string" ? Number(value) : NaN;
|
|
3476
|
+
return Number.isFinite(n) && n >= 0 ? Math.floor(n) : fallback;
|
|
3477
|
+
}
|
|
3478
|
+
function livePolicyFrom(raw) {
|
|
3479
|
+
const o = typeof raw === "object" && raw !== null ? raw : {};
|
|
3480
|
+
return {
|
|
3481
|
+
chatMode: oneOf(o["chat_mode"], ["everyone", "hosts_only", "off"], DEFAULT_LIVE_POLICY.chatMode),
|
|
3482
|
+
avLock: oneOf(o["attendee_av_lock"], ["off", "mic", "camera", "both"], DEFAULT_LIVE_POLICY.avLock),
|
|
3483
|
+
timeLimitMinutes: whole(o["time_limit_minutes"], 0),
|
|
3484
|
+
timeLimitWarningMinutes: whole(o["time_limit_warning_minutes"], DEFAULT_LIVE_POLICY.timeLimitWarningMinutes),
|
|
3485
|
+
recordingConsent: oneOf(
|
|
3486
|
+
o["recording_consent"],
|
|
3487
|
+
["notice", "ok_or_leave", "view_only_until_agree"],
|
|
3488
|
+
DEFAULT_LIVE_POLICY.recordingConsent
|
|
3489
|
+
)
|
|
3490
|
+
};
|
|
3491
|
+
}
|
|
3492
|
+
function samePolicy(a, b) {
|
|
3493
|
+
return a.chatMode === b.chatMode && a.avLock === b.avLock && a.timeLimitMinutes === b.timeLimitMinutes && a.timeLimitWarningMinutes === b.timeLimitWarningMinutes && a.recordingConsent === b.recordingConsent;
|
|
3494
|
+
}
|
|
3495
|
+
var MODERATORS = /* @__PURE__ */ new Set(["host", "cohost"]);
|
|
3496
|
+
function isLockedFor(policy, role, kind) {
|
|
3497
|
+
if (MODERATORS.has(role)) return false;
|
|
3498
|
+
return policy.avLock === "both" || (kind === "microphone" ? policy.avLock === "mic" : policy.avLock === "camera");
|
|
3499
|
+
}
|
|
3500
|
+
function consentPending(policy, role, recordingOn, given) {
|
|
3501
|
+
return recordingOn && !given && policy.recordingConsent !== "notice" && !MODERATORS.has(role);
|
|
3502
|
+
}
|
|
3503
|
+
|
|
3414
3504
|
// src/core/attendance.ts
|
|
3415
3505
|
var IDLE_MEDIA_REGION = {
|
|
3416
3506
|
permission: { microphone: "unknown", camera: "unknown" },
|
|
@@ -3481,6 +3571,11 @@ var EMPTY = {
|
|
|
3481
3571
|
presenter: null,
|
|
3482
3572
|
waitingCount: 0,
|
|
3483
3573
|
leavePolicy: DEFAULT_LEAVE_POLICY,
|
|
3574
|
+
livePolicy: DEFAULT_LIVE_POLICY,
|
|
3575
|
+
canReclaim: false,
|
|
3576
|
+
recordingConsentGiven: false,
|
|
3577
|
+
sessionStartedAt: null,
|
|
3578
|
+
mutedByHost: false,
|
|
3484
3579
|
moderationNotice: null,
|
|
3485
3580
|
actionNotice: null,
|
|
3486
3581
|
privateChatRequest: null,
|
|
@@ -3490,6 +3585,8 @@ var EMPTY = {
|
|
|
3490
3585
|
names: {},
|
|
3491
3586
|
wrapUp: null,
|
|
3492
3587
|
noteTakerRefusal: null,
|
|
3588
|
+
captionsOn: false,
|
|
3589
|
+
captionsRefusal: null,
|
|
3493
3590
|
media: IDLE_MEDIA,
|
|
3494
3591
|
mediaRegion: IDLE_MEDIA_REGION,
|
|
3495
3592
|
failure: null,
|
|
@@ -3694,7 +3791,12 @@ function createMeetStore(initial = {}) {
|
|
|
3694
3791
|
if (current.enabled === next.enabled && current.unavailable?.code === next.unavailable?.code && current.unavailable?.reason === next.unavailable?.reason && current.unavailable?.message === next.unavailable?.message) {
|
|
3695
3792
|
return;
|
|
3696
3793
|
}
|
|
3697
|
-
commit({
|
|
3794
|
+
commit({
|
|
3795
|
+
...state,
|
|
3796
|
+
media: { ...state.media, [kind]: next },
|
|
3797
|
+
// The person turned their own microphone on again: the host's mute is over.
|
|
3798
|
+
...kind === "microphone" && next.enabled && state.mutedByHost ? { mutedByHost: false } : {}
|
|
3799
|
+
});
|
|
3698
3800
|
},
|
|
3699
3801
|
reset() {
|
|
3700
3802
|
const phase = nextPhase(state.phase, { type: "reset", teardown: true }) ?? EMPTY.phase;
|
|
@@ -3732,8 +3834,7 @@ var ROOM_EVENTS = {
|
|
|
3732
3834
|
/**
|
|
3733
3835
|
* A host or co-host acted (Meet wave 2). Payload `{ meeting_id, kind, … }`:
|
|
3734
3836
|
* `muted {source, by}` · `ask-unmute {by}` · `removed {by}` — addressed to the
|
|
3735
|
-
* person concerned; `
|
|
3736
|
-
* role}` — to everyone.
|
|
3837
|
+
* person concerned; `role {identity, role}` — to everyone.
|
|
3737
3838
|
*/
|
|
3738
3839
|
moderation: "matrx.meet.moderation",
|
|
3739
3840
|
/**
|
|
@@ -3921,10 +4022,11 @@ function moderationText(kind, payload) {
|
|
|
3921
4022
|
switch (kind) {
|
|
3922
4023
|
case "muted": {
|
|
3923
4024
|
const source = text2(payload["source"]) ?? "microphone";
|
|
3924
|
-
|
|
4025
|
+
const who = payload["by_role"] === "host" || payload["by_role"] === "cohost" ? "the host" : by;
|
|
4026
|
+
return source === "microphone" ? `You've been muted by ${who}.` : source === "camera" ? `Your camera was turned off by ${who}.` : `Your screen share was stopped by ${who}.`;
|
|
3925
4027
|
}
|
|
3926
4028
|
case "ask-unmute":
|
|
3927
|
-
return `${by}
|
|
4029
|
+
return `${by === "The host" ? "The host" : by} asked you to unmute.`;
|
|
3928
4030
|
case "removed":
|
|
3929
4031
|
return `${by} removed you from this meeting.`;
|
|
3930
4032
|
default:
|
|
@@ -3950,7 +4052,7 @@ function applyModeration(store, payload, now) {
|
|
|
3950
4052
|
grants: { ...snapshot.grants, role },
|
|
3951
4053
|
moderationNotice: {
|
|
3952
4054
|
kind: "role",
|
|
3953
|
-
text: role === "host" ? "You are now the host." : role === "cohost" ? "You
|
|
4055
|
+
text: role === "host" ? "You are now the host." : role === "cohost" ? "You're now a co-host." : role === "presenter" ? "You're now a presenter." : snapshot.grants.role === "presenter" ? "You're now a participant: you can no longer present." : "You're now a participant: you are no longer a co-host.",
|
|
3954
4056
|
at: now()
|
|
3955
4057
|
}
|
|
3956
4058
|
});
|
|
@@ -3962,7 +4064,10 @@ function applyModeration(store, payload, now) {
|
|
|
3962
4064
|
case "removed": {
|
|
3963
4065
|
const sentence = moderationText(kind, payload);
|
|
3964
4066
|
if (sentence === null) return ignored("a moderation event with no sentence");
|
|
3965
|
-
store.patch({
|
|
4067
|
+
store.patch({
|
|
4068
|
+
moderationNotice: { kind, text: sentence, at: now() },
|
|
4069
|
+
...kind === "muted" && (text2(payload["source"]) ?? "microphone") === "microphone" ? { mutedByHost: true } : {}
|
|
4070
|
+
});
|
|
3966
4071
|
return HANDLED;
|
|
3967
4072
|
}
|
|
3968
4073
|
default:
|
|
@@ -4784,6 +4889,7 @@ function applyDoorRow(store, attendee) {
|
|
|
4784
4889
|
function decidedState(state) {
|
|
4785
4890
|
return WAITING_ADMISSION_STATES.includes(state) ? "expired" : state;
|
|
4786
4891
|
}
|
|
4892
|
+
var LIVE_POLICY_POLL_MS = 3e3;
|
|
4787
4893
|
function createMeetingSession(options) {
|
|
4788
4894
|
const { manager, repository, store, identity } = options;
|
|
4789
4895
|
let channel = null;
|
|
@@ -4925,6 +5031,46 @@ function createMeetingSession(options) {
|
|
|
4925
5031
|
stopWaiting();
|
|
4926
5032
|
}
|
|
4927
5033
|
}
|
|
5034
|
+
let policyTimer = null;
|
|
5035
|
+
let policyReading = false;
|
|
5036
|
+
async function readLivePolicy() {
|
|
5037
|
+
const meeting = store.snapshot().meeting;
|
|
5038
|
+
const pass = options.resolvePass?.() ?? null;
|
|
5039
|
+
if (meeting === null || pass === null || policyReading) return;
|
|
5040
|
+
policyReading = true;
|
|
5041
|
+
try {
|
|
5042
|
+
const response = await options.api.request({
|
|
5043
|
+
path: `${MEET_ROUTES.state}?meeting_id=${encodeURIComponent(meeting.id)}`,
|
|
5044
|
+
method: "GET",
|
|
5045
|
+
requireAuth: false,
|
|
5046
|
+
operation: "meet.state(policy)",
|
|
5047
|
+
headers: { [MEETING_PASS_HEADER]: pass }
|
|
5048
|
+
});
|
|
5049
|
+
if (!response.ok) return;
|
|
5050
|
+
const read = await response.json();
|
|
5051
|
+
const next = livePolicyFrom(read.live_policy);
|
|
5052
|
+
const started = read.session_started_at ? Date.parse(read.session_started_at) : NaN;
|
|
5053
|
+
const snapshot = store.snapshot();
|
|
5054
|
+
const startedAt = Number.isFinite(started) ? started : snapshot.sessionStartedAt;
|
|
5055
|
+
if (!samePolicy(snapshot.livePolicy, next) || startedAt !== snapshot.sessionStartedAt) {
|
|
5056
|
+
store.patch({ livePolicy: next, sessionStartedAt: startedAt });
|
|
5057
|
+
}
|
|
5058
|
+
} catch {
|
|
5059
|
+
} finally {
|
|
5060
|
+
policyReading = false;
|
|
5061
|
+
}
|
|
5062
|
+
}
|
|
5063
|
+
function syncLivePolicyTimer() {
|
|
5064
|
+
const inCall = store.snapshot().phase === "in_call";
|
|
5065
|
+
if (inCall && policyTimer === null) {
|
|
5066
|
+
void readLivePolicy();
|
|
5067
|
+
policyTimer = setInterval(() => void readLivePolicy(), LIVE_POLICY_POLL_MS);
|
|
5068
|
+
} else if (!inCall && policyTimer !== null) {
|
|
5069
|
+
clearInterval(policyTimer);
|
|
5070
|
+
policyTimer = null;
|
|
5071
|
+
}
|
|
5072
|
+
}
|
|
5073
|
+
const unsubscribePolicy = store.subscribe(syncLivePolicyTimer);
|
|
4928
5074
|
async function readState2() {
|
|
4929
5075
|
if (reading !== null) return reading;
|
|
4930
5076
|
const meeting = store.snapshot().meeting;
|
|
@@ -5311,6 +5457,9 @@ function createMeetingSession(options) {
|
|
|
5311
5457
|
},
|
|
5312
5458
|
dispose() {
|
|
5313
5459
|
stopWaiting();
|
|
5460
|
+
unsubscribePolicy();
|
|
5461
|
+
if (policyTimer !== null) clearInterval(policyTimer);
|
|
5462
|
+
policyTimer = null;
|
|
5314
5463
|
channel?.close();
|
|
5315
5464
|
channel = null;
|
|
5316
5465
|
meetingChannel?.close();
|
|
@@ -6628,6 +6777,7 @@ function createRoomEngine(options) {
|
|
|
6628
6777
|
lastServerUrl = token.serverUrl;
|
|
6629
6778
|
connectionPolicy = token.connectionPolicy ?? DEFAULT_CONNECTION_POLICY;
|
|
6630
6779
|
if (token.leavePolicy !== void 0) store.patch({ leavePolicy: token.leavePolicy });
|
|
6780
|
+
store.patch({ canReclaim: token.canReclaim === true });
|
|
6631
6781
|
store.patch({
|
|
6632
6782
|
localIdentity: token.identity,
|
|
6633
6783
|
breakoutRoomId: token.breakoutRoomId ?? null,
|
|
@@ -7122,13 +7272,17 @@ var MODERATION_ACTIONS = [
|
|
|
7122
7272
|
"ask_unmute",
|
|
7123
7273
|
"ask_all_unmute",
|
|
7124
7274
|
"spotlight",
|
|
7125
|
-
"
|
|
7275
|
+
"sync_presenter",
|
|
7126
7276
|
"raise_hand",
|
|
7127
7277
|
"lower_hand",
|
|
7128
7278
|
"lower_all_hands",
|
|
7129
7279
|
"make_cohost",
|
|
7280
|
+
"make_presenter",
|
|
7281
|
+
"revoke_presenter",
|
|
7282
|
+
"set_av_lock",
|
|
7130
7283
|
"revoke_cohost",
|
|
7131
7284
|
"transfer_host",
|
|
7285
|
+
"reclaim_host",
|
|
7132
7286
|
"rename",
|
|
7133
7287
|
"remove",
|
|
7134
7288
|
"report"
|
|
@@ -7154,18 +7308,17 @@ function createInRoomClient(options) {
|
|
|
7154
7308
|
function refusal2(response, operation, remedy) {
|
|
7155
7309
|
return refusalFromResponse(response, operation, remedy);
|
|
7156
7310
|
}
|
|
7157
|
-
let
|
|
7311
|
+
let toldSharing = false;
|
|
7158
7312
|
let tellChain = Promise.resolve();
|
|
7159
7313
|
store.subscribe(() => {
|
|
7160
7314
|
const local = store.snapshot().participants.find((p) => p.isLocal);
|
|
7161
7315
|
const sharing = local?.screenSharing === true;
|
|
7162
|
-
if (sharing ===
|
|
7163
|
-
|
|
7164
|
-
|
|
7165
|
-
tellChain = tellChain.then(() => client.moderate({ action: "present", on })).then(
|
|
7316
|
+
if (sharing === toldSharing || local === void 0) return;
|
|
7317
|
+
toldSharing = sharing;
|
|
7318
|
+
tellChain = tellChain.then(() => client.moderate({ action: "sync_presenter" })).then(
|
|
7166
7319
|
() => void 0,
|
|
7167
7320
|
(error) => {
|
|
7168
|
-
console.warn(`[meet] the server did not take
|
|
7321
|
+
console.warn(`[meet] the server did not take the screen-share change: ${String(error)}`);
|
|
7169
7322
|
}
|
|
7170
7323
|
);
|
|
7171
7324
|
});
|
|
@@ -7182,8 +7335,7 @@ function createInRoomClient(options) {
|
|
|
7182
7335
|
action: request.action,
|
|
7183
7336
|
...request.identity != null ? { identity: request.identity } : {},
|
|
7184
7337
|
...request.name !== void 0 ? { name: request.name } : {},
|
|
7185
|
-
...request.reason !== void 0 ? { reason: request.reason } : {}
|
|
7186
|
-
...request.on !== void 0 ? { on: request.on } : {}
|
|
7338
|
+
...request.reason !== void 0 ? { reason: request.reason } : {}
|
|
7187
7339
|
},
|
|
7188
7340
|
...hdrs !== void 0 ? { headers: hdrs } : {}
|
|
7189
7341
|
});
|
|
@@ -8060,11 +8212,13 @@ function takeMoveRequest(store) {
|
|
|
8060
8212
|
|
|
8061
8213
|
// src/core/observation.ts
|
|
8062
8214
|
function observedRole(role, standing) {
|
|
8063
|
-
if (role === "host" || role === "cohost") return role;
|
|
8215
|
+
if (role === "host" || role === "cohost" || role === "presenter") return role;
|
|
8064
8216
|
return isLinkFollower(standing) ? "guest" : "participant";
|
|
8065
8217
|
}
|
|
8066
|
-
function observedDevice(track, permission = "unknown") {
|
|
8218
|
+
function observedDevice(track, permission = "unknown", held = null) {
|
|
8219
|
+
if (held === "locked") return "locked";
|
|
8067
8220
|
if (track.enabled) return "on";
|
|
8221
|
+
if (held === "muted_by_host") return "muted_by_host";
|
|
8068
8222
|
const reason = deviceUnavailableReason(track, permission);
|
|
8069
8223
|
return reason === null ? "muted_by_me" : `unavailable:${reason}`;
|
|
8070
8224
|
}
|
|
@@ -8101,10 +8255,20 @@ function observe(input) {
|
|
|
8101
8255
|
recording: snapshot?.recording === "recording" || snapshot?.recording === "stopping",
|
|
8102
8256
|
// S6c: the autoplay region is known only inside the room (no remote audio exists elsewhere).
|
|
8103
8257
|
audioBlocked: inCall && snapshot !== null ? snapshot.mediaRegion.audioOutput === "blocked" : null,
|
|
8104
|
-
camera: deviceInPlay && snapshot !== null ? observedDevice(snapshot.media.camera, snapshot.mediaRegion.permission.camera) : null,
|
|
8105
|
-
microphone: deviceInPlay && snapshot !== null ? observedDevice(snapshot.media.microphone, snapshot.mediaRegion.permission.microphone) : null
|
|
8258
|
+
camera: deviceInPlay && snapshot !== null ? observedDevice(snapshot.media.camera, snapshot.mediaRegion.permission.camera, lockedFor(snapshot, "camera", inCall)) : null,
|
|
8259
|
+
microphone: deviceInPlay && snapshot !== null ? observedDevice(snapshot.media.microphone, snapshot.mediaRegion.permission.microphone, lockedFor(snapshot, "microphone", inCall)) : null
|
|
8106
8260
|
};
|
|
8107
8261
|
}
|
|
8262
|
+
function lockedFor(snapshot, kind, inCall) {
|
|
8263
|
+
if (!inCall) return null;
|
|
8264
|
+
const role = effectiveRole(snapshot);
|
|
8265
|
+
if (isLockedFor(snapshot.livePolicy, role, kind)) return "locked";
|
|
8266
|
+
if (snapshot.livePolicy.recordingConsent === "view_only_until_agree" && consentPending(snapshot.livePolicy, role, snapshot.recording === "recording", snapshot.recordingConsentGiven)) {
|
|
8267
|
+
return "locked";
|
|
8268
|
+
}
|
|
8269
|
+
if (kind === "microphone" && snapshot.mutedByHost) return "muted_by_host";
|
|
8270
|
+
return null;
|
|
8271
|
+
}
|
|
8108
8272
|
function staticObservation(phase, reason = null) {
|
|
8109
8273
|
return {
|
|
8110
8274
|
phase,
|
|
@@ -8253,6 +8417,7 @@ export {
|
|
|
8253
8417
|
autoAssign,
|
|
8254
8418
|
autoRejoinDelayMs,
|
|
8255
8419
|
availableActivities,
|
|
8420
|
+
breakoutClosingMs,
|
|
8256
8421
|
breakoutRemainingMs,
|
|
8257
8422
|
callInviteAction,
|
|
8258
8423
|
callInviteText,
|