@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/core.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { P as ParticipantIdentity, e as ParticipantRole, k as AdmissionState, a1 as NoteTakerState, a as MeetParticipant, M as MeetingRecord, R as RoomName, d as CallInvite, a6 as ParticipantStanding, a3 as ObserversVisibleTo, S as StageLayout, L as LobbyEntry, aa as RecordingState, U as UserId,
|
|
2
|
-
export { A as AccessTokenSource, l as CAPTION_LANGUAGES, o as CallablePerson, E as EMPTY_COLLAB, F as FILE_SESSION_PATH, J as JsonObject, r as JsonValue, s as MeetApiOptions, t as MeetApiRequest, u as MeetAppFocus, v as MeetBreakoutBroadcast, w as MeetBreakoutPlan, x as MeetBreakoutRoom, y as MeetCollabSettings, z as MeetFileMedia, B as MeetPoll, D as MeetPollOption, G as MeetPollState, H as MeetQuestion, K as MeetQuestionState, N as MeetStroke, Q as MeetingActivities, i as MeetingAppPanel, _ as MeetingNoteKind, a2 as ORGANIZATION_HEADER, a5 as OccurrenceState, a7 as ROLE_RANK, ad as RsvpState, T as TranscriptSource, 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
|
|
1
|
+
import { P as ParticipantIdentity, e as ParticipantRole, k as AdmissionState, a1 as NoteTakerState, a as MeetParticipant, M as MeetingRecord, R as RoomName, d as CallInvite, a6 as ParticipantStanding, a3 as ObserversVisibleTo, S as StageLayout, L as LobbyEntry, aa as RecordingState, U as UserId, aF as RecordingSource, ae as TranscriptSegment, g as MeetingNote, W as WrapUpAnnouncement, j as CollabSnapshot, p as ConnectionQuality, h as MeetingId, b as MeetApi, f as CallMode, O as OrganizationId, m as CallId, n as CallState, Z as MeetingKind, a8 as RecordingPolicy, V as MeetingAttendee, a9 as RecordingRecord, a0 as MeetingSettings, X as MeetingChanges, a4 as OccurrenceOverride, $ as MeetingOccurrence, af as UpcomingOccurrence, Y as MeetingInvitee, I as InviteeInput, q as InviteeRole, ab as RsvpAnswer, ac as RsvpInvitation, c as MeetIdentity, C as CollabPanel } from './collab-BNJNgXFB.cjs';
|
|
2
|
+
export { A as AccessTokenSource, l as CAPTION_LANGUAGES, o as CallablePerson, E as EMPTY_COLLAB, F as FILE_SESSION_PATH, J as JsonObject, r as JsonValue, s as MeetApiOptions, t as MeetApiRequest, u as MeetAppFocus, v as MeetBreakoutBroadcast, w as MeetBreakoutPlan, x as MeetBreakoutRoom, y as MeetCollabSettings, z as MeetFileMedia, B as MeetPoll, D as MeetPollOption, G as MeetPollState, H as MeetQuestion, K as MeetQuestionState, N as MeetStroke, Q as MeetingActivities, i as MeetingAppPanel, _ as MeetingNoteKind, a2 as ORGANIZATION_HEADER, a5 as OccurrenceState, a7 as ROLE_RANK, ad as RsvpState, T as TranscriptSource, 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 { RealtimeManager } from '@ai-matrx/realtime';
|
|
4
4
|
import { MessagingSupabaseClient, ActionHandler } from '@ai-matrx/messaging';
|
|
5
5
|
import { RoomOptions, ConnectionQuality as ConnectionQuality$1, Participant } from 'livekit-client';
|
|
@@ -158,6 +158,29 @@ declare function leaveChoices(args: {
|
|
|
158
158
|
readonly othersPresent: boolean;
|
|
159
159
|
}): readonly LeaveChoice[];
|
|
160
160
|
|
|
161
|
+
/**
|
|
162
|
+
* THE RULES A SCREEN REDRAWS FROM WHILE THE CALL IS RUNNING (P1: chat-restrictions,
|
|
163
|
+
* mod-attendee-av-disabled, time-limit-warning, rec-consent-gate).
|
|
164
|
+
*
|
|
165
|
+
* The host can change a meeting's rules mid-call through the meeting's own rules door, which
|
|
166
|
+
* never talks to the room. The server's state read answers the live values (`live_policy`), and
|
|
167
|
+
* the room reads it on a short timer while the person is in the call — so a rule changed at
|
|
168
|
+
* second 40 is on every screen within one poll. Pure functions here; the timer lives in
|
|
169
|
+
* `meetings.ts`.
|
|
170
|
+
*/
|
|
171
|
+
|
|
172
|
+
type ChatMode = "everyone" | "hosts_only" | "off";
|
|
173
|
+
type AvLock = "off" | "mic" | "camera" | "both";
|
|
174
|
+
type RecordingConsent = "notice" | "ok_or_leave" | "view_only_until_agree";
|
|
175
|
+
interface LivePolicy {
|
|
176
|
+
readonly chatMode: ChatMode;
|
|
177
|
+
readonly avLock: AvLock;
|
|
178
|
+
/** 0 = no limit. */
|
|
179
|
+
readonly timeLimitMinutes: number;
|
|
180
|
+
readonly timeLimitWarningMinutes: number;
|
|
181
|
+
readonly recordingConsent: RecordingConsent;
|
|
182
|
+
}
|
|
183
|
+
|
|
161
184
|
/**
|
|
162
185
|
* LISTEN-ONLY ATTENDANCE — being IN the room is never contingent on a device.
|
|
163
186
|
*
|
|
@@ -593,7 +616,7 @@ interface RoomChatMessage {
|
|
|
593
616
|
* packet, addressed to this participant. Rendered once, dismissible, in words.
|
|
594
617
|
*/
|
|
595
618
|
interface ModerationNotice {
|
|
596
|
-
readonly kind: "muted" | "ask-unmute" | "removed" | "role";
|
|
619
|
+
readonly kind: "muted" | "ask-unmute" | "removed" | "role" | "locked" | "capability";
|
|
597
620
|
readonly text: string;
|
|
598
621
|
readonly at: number;
|
|
599
622
|
}
|
|
@@ -723,7 +746,7 @@ interface MeetSnapshot {
|
|
|
723
746
|
* recording…" for the whole meeting while a perfectly healthy egress ran, and
|
|
724
747
|
* "Stopping recording…" forever after (MRI-C8). The server's transitions
|
|
725
748
|
* arrive on two transports now: the `meet_recordings` row for a member, and
|
|
726
|
-
*
|
|
749
|
+
* the room's replicated state for a guest, who has no database.
|
|
727
750
|
*/
|
|
728
751
|
readonly recording: RecordingState;
|
|
729
752
|
readonly recordingStartedBy: UserId | null;
|
|
@@ -760,6 +783,16 @@ interface MeetSnapshot {
|
|
|
760
783
|
readonly waitingCount: number;
|
|
761
784
|
/** S8: what the host's Leave offers in this meeting (from the token's `leave_policy`). */
|
|
762
785
|
readonly leavePolicy: LeavePolicy;
|
|
786
|
+
/** The meeting's rules as they are RIGHT NOW (chat mode, attendee lock, time limit), read live while in the call. */
|
|
787
|
+
readonly livePolicy: LivePolicy;
|
|
788
|
+
/** host-reclaim: this person is the meeting's owner and may take the host powers back (Zoom rules). */
|
|
789
|
+
readonly canReclaim: boolean;
|
|
790
|
+
/** rec-consent-gate: this person agreed to the recording that is running. */
|
|
791
|
+
readonly recordingConsentGiven: boolean;
|
|
792
|
+
/** When this run started (epoch ms), so every screen counts a time limit down together. */
|
|
793
|
+
readonly sessionStartedAt: number | null;
|
|
794
|
+
/** True from the moment a host muted THIS microphone until the person turns it on themselves. */
|
|
795
|
+
readonly mutedByHost: boolean;
|
|
763
796
|
/** The last thing a host did to THIS participant, in words. Dismissible. */
|
|
764
797
|
readonly moderationNotice: ModerationNotice | null;
|
|
765
798
|
/**
|
|
@@ -821,6 +854,10 @@ interface MeetSnapshot {
|
|
|
821
854
|
* last device change and an offered new device. Written only by `media-supervisor.ts`.
|
|
822
855
|
*/
|
|
823
856
|
readonly mediaRegion: MediaRegionState;
|
|
857
|
+
/** `captions-toggle`: THIS viewer wants captions. Local to the viewer; never sent to the room. */
|
|
858
|
+
readonly captionsOn: boolean;
|
|
859
|
+
/** Why asking for captions failed, in the server's words (`captions-unavailable`). */
|
|
860
|
+
readonly captionsRefusal: NoteTakerRefusal | null;
|
|
824
861
|
/** The last failure, with its remedy. Never null-and-hoping. */
|
|
825
862
|
readonly failure: {
|
|
826
863
|
readonly message: string;
|
|
@@ -976,6 +1013,14 @@ interface MeetAi {
|
|
|
976
1013
|
meetingId: MeetingId;
|
|
977
1014
|
roomName: RoomName;
|
|
978
1015
|
}): Promise<NoteTakerDispatch>;
|
|
1016
|
+
/**
|
|
1017
|
+
* Make sure the note-taker (the speech-to-text) is in the room because THIS viewer turned
|
|
1018
|
+
* captions on. Open to everyone in the meeting, guests included. Never throws: a refusal
|
|
1019
|
+
* is stored as `captionsRefusal` in the server's own words.
|
|
1020
|
+
*/
|
|
1021
|
+
requestCaptions(args: {
|
|
1022
|
+
meetingId: MeetingId;
|
|
1023
|
+
}): Promise<void>;
|
|
979
1024
|
/** Dismiss it. Nothing automatic brings a dismissed note-taker back (D9). */
|
|
980
1025
|
stopNoteTaker(args: {
|
|
981
1026
|
meetingId: MeetingId;
|
|
@@ -1608,8 +1653,7 @@ declare const ROOM_EVENTS: {
|
|
|
1608
1653
|
/**
|
|
1609
1654
|
* A host or co-host acted (Meet wave 2). Payload `{ meeting_id, kind, … }`:
|
|
1610
1655
|
* `muted {source, by}` · `ask-unmute {by}` · `removed {by}` — addressed to the
|
|
1611
|
-
* person concerned; `
|
|
1612
|
-
* role}` — to everyone.
|
|
1656
|
+
* person concerned; `role {identity, role}` — to everyone.
|
|
1613
1657
|
*/
|
|
1614
1658
|
readonly moderation: "matrx.meet.moderation";
|
|
1615
1659
|
/**
|
|
@@ -2877,6 +2921,8 @@ interface RoomToken {
|
|
|
2877
2921
|
readonly connectionPolicy?: ConnectionPolicy | undefined;
|
|
2878
2922
|
/** S8: what the host's Leave offers for this meeting (`host_leave_prompt`, `end_confirm`). */
|
|
2879
2923
|
readonly leavePolicy?: LeavePolicy | undefined;
|
|
2924
|
+
/** host-reclaim (`host_reclaim = prompt`): the returning owner may take the host powers back. */
|
|
2925
|
+
readonly canReclaim?: boolean | undefined;
|
|
2880
2926
|
}
|
|
2881
2927
|
|
|
2882
2928
|
interface TokenClientOptions {
|
|
@@ -2977,6 +3023,8 @@ declare const MEET_ROUTES: {
|
|
|
2977
3023
|
readonly noteTakerStop: "/api/v1/meet/agent/stop";
|
|
2978
3024
|
/** In-meeting Q&A. Streams NDJSON; body is `{meeting_id, question}` only. */
|
|
2979
3025
|
readonly intelligenceAsk: "/api/v1/meet/intelligence/ask";
|
|
3026
|
+
/** Anyone in the meeting (guests with the room pass included) asks for captions for themselves. */
|
|
3027
|
+
readonly noteTakerCaptions: "/api/v1/meet/agent/captions";
|
|
2980
3028
|
/** A host ends the meeting for everyone. Served by MRI-A6. */
|
|
2981
3029
|
readonly meetingEnd: "/api/v1/meet/end";
|
|
2982
3030
|
/**
|
|
@@ -3590,15 +3638,14 @@ declare function createWebEffectsStorage(key?: string): EffectsStorage;
|
|
|
3590
3638
|
*/
|
|
3591
3639
|
|
|
3592
3640
|
/** Every host power the server performs. One vocabulary with `services/meet/moderation.py`. */
|
|
3593
|
-
type ModerationAction = "mute" | "stop_video" | "stop_screen" | "mute_all" | "ask_unmute" | "ask_all_unmute" | "spotlight" | "
|
|
3641
|
+
type ModerationAction = "mute" | "stop_video" | "stop_screen" | "mute_all" | "ask_unmute" | "ask_all_unmute" | "spotlight" | "sync_presenter" | "raise_hand" | "lower_hand" | "lower_all_hands" | "make_cohost" | "make_presenter" | "revoke_presenter" | "set_av_lock" | "revoke_cohost" | "transfer_host" | "reclaim_host" | "rename" | "remove" | "report";
|
|
3594
3642
|
declare const MODERATION_ACTIONS: readonly ModerationAction[];
|
|
3595
3643
|
interface ModerationRequest {
|
|
3596
3644
|
readonly action: ModerationAction;
|
|
3597
3645
|
readonly identity?: ParticipantIdentity | null | undefined;
|
|
3598
3646
|
readonly name?: string | undefined;
|
|
3647
|
+
readonly value?: string | undefined;
|
|
3599
3648
|
readonly reason?: string | undefined;
|
|
3600
|
-
/** `present` only: true = I am presenting now, false = I stopped (S8). */
|
|
3601
|
-
readonly on?: boolean | undefined;
|
|
3602
3649
|
}
|
|
3603
3650
|
interface ModerationResult {
|
|
3604
3651
|
readonly action: ModerationAction;
|
|
@@ -3872,7 +3919,7 @@ declare function takeMoveRequest(store: CollabStoreLike): {
|
|
|
3872
3919
|
* a link follower whose role is `participant` renders `guest` (CORE-DESIGN §2.1); `presenter` /
|
|
3873
3920
|
* `viewer` render `participant` until the contract adopts them (§3.7 C3).
|
|
3874
3921
|
*/
|
|
3875
|
-
type ObservedRole = "host" | "cohost" | "participant" | "guest";
|
|
3922
|
+
type ObservedRole = "host" | "cohost" | "presenter" | "participant" | "guest";
|
|
3876
3923
|
/** `data-meet-phase` — the core's phase IS the contract value (S6a: no translation layer). */
|
|
3877
3924
|
type ObservedPhase = MeetPhase;
|
|
3878
3925
|
type ObservedConnection = ConnectionRegion;
|
|
@@ -3901,7 +3948,7 @@ interface ObserveInput {
|
|
|
3901
3948
|
* The reason comes from the media supervisor (S6c), which reads the browser's permission store: a
|
|
3902
3949
|
* kind the browser denies is `unavailable:denied` even when nothing tried to open it.
|
|
3903
3950
|
*/
|
|
3904
|
-
declare function observedDevice(track: LocalTrackState, permission?: PermissionReading): string;
|
|
3951
|
+
declare function observedDevice(track: LocalTrackState, permission?: PermissionReading, held?: "locked" | "muted_by_host" | null): string;
|
|
3905
3952
|
/**
|
|
3906
3953
|
* The phase the person is looking at: the store's phase, verbatim (CORE-DESIGN §3.1). The one
|
|
3907
3954
|
* derivation left is the ended meeting: a row that says it is over renders `ended` for anyone not
|
package/dist/core.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { P as ParticipantIdentity, e as ParticipantRole, k as AdmissionState, a1 as NoteTakerState, a as MeetParticipant, M as MeetingRecord, R as RoomName, d as CallInvite, a6 as ParticipantStanding, a3 as ObserversVisibleTo, S as StageLayout, L as LobbyEntry, aa as RecordingState, U as UserId,
|
|
2
|
-
export { A as AccessTokenSource, l as CAPTION_LANGUAGES, o as CallablePerson, E as EMPTY_COLLAB, F as FILE_SESSION_PATH, J as JsonObject, r as JsonValue, s as MeetApiOptions, t as MeetApiRequest, u as MeetAppFocus, v as MeetBreakoutBroadcast, w as MeetBreakoutPlan, x as MeetBreakoutRoom, y as MeetCollabSettings, z as MeetFileMedia, B as MeetPoll, D as MeetPollOption, G as MeetPollState, H as MeetQuestion, K as MeetQuestionState, N as MeetStroke, Q as MeetingActivities, i as MeetingAppPanel, _ as MeetingNoteKind, a2 as ORGANIZATION_HEADER, a5 as OccurrenceState, a7 as ROLE_RANK, ad as RsvpState, T as TranscriptSource, 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
|
|
1
|
+
import { P as ParticipantIdentity, e as ParticipantRole, k as AdmissionState, a1 as NoteTakerState, a as MeetParticipant, M as MeetingRecord, R as RoomName, d as CallInvite, a6 as ParticipantStanding, a3 as ObserversVisibleTo, S as StageLayout, L as LobbyEntry, aa as RecordingState, U as UserId, aF as RecordingSource, ae as TranscriptSegment, g as MeetingNote, W as WrapUpAnnouncement, j as CollabSnapshot, p as ConnectionQuality, h as MeetingId, b as MeetApi, f as CallMode, O as OrganizationId, m as CallId, n as CallState, Z as MeetingKind, a8 as RecordingPolicy, V as MeetingAttendee, a9 as RecordingRecord, a0 as MeetingSettings, X as MeetingChanges, a4 as OccurrenceOverride, $ as MeetingOccurrence, af as UpcomingOccurrence, Y as MeetingInvitee, I as InviteeInput, q as InviteeRole, ab as RsvpAnswer, ac as RsvpInvitation, c as MeetIdentity, C as CollabPanel } from './collab-BNJNgXFB.js';
|
|
2
|
+
export { A as AccessTokenSource, l as CAPTION_LANGUAGES, o as CallablePerson, E as EMPTY_COLLAB, F as FILE_SESSION_PATH, J as JsonObject, r as JsonValue, s as MeetApiOptions, t as MeetApiRequest, u as MeetAppFocus, v as MeetBreakoutBroadcast, w as MeetBreakoutPlan, x as MeetBreakoutRoom, y as MeetCollabSettings, z as MeetFileMedia, B as MeetPoll, D as MeetPollOption, G as MeetPollState, H as MeetQuestion, K as MeetQuestionState, N as MeetStroke, Q as MeetingActivities, i as MeetingAppPanel, _ as MeetingNoteKind, a2 as ORGANIZATION_HEADER, a5 as OccurrenceState, a7 as ROLE_RANK, ad as RsvpState, T as TranscriptSource, 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 { RealtimeManager } from '@ai-matrx/realtime';
|
|
4
4
|
import { MessagingSupabaseClient, ActionHandler } from '@ai-matrx/messaging';
|
|
5
5
|
import { RoomOptions, ConnectionQuality as ConnectionQuality$1, Participant } from 'livekit-client';
|
|
@@ -158,6 +158,29 @@ declare function leaveChoices(args: {
|
|
|
158
158
|
readonly othersPresent: boolean;
|
|
159
159
|
}): readonly LeaveChoice[];
|
|
160
160
|
|
|
161
|
+
/**
|
|
162
|
+
* THE RULES A SCREEN REDRAWS FROM WHILE THE CALL IS RUNNING (P1: chat-restrictions,
|
|
163
|
+
* mod-attendee-av-disabled, time-limit-warning, rec-consent-gate).
|
|
164
|
+
*
|
|
165
|
+
* The host can change a meeting's rules mid-call through the meeting's own rules door, which
|
|
166
|
+
* never talks to the room. The server's state read answers the live values (`live_policy`), and
|
|
167
|
+
* the room reads it on a short timer while the person is in the call — so a rule changed at
|
|
168
|
+
* second 40 is on every screen within one poll. Pure functions here; the timer lives in
|
|
169
|
+
* `meetings.ts`.
|
|
170
|
+
*/
|
|
171
|
+
|
|
172
|
+
type ChatMode = "everyone" | "hosts_only" | "off";
|
|
173
|
+
type AvLock = "off" | "mic" | "camera" | "both";
|
|
174
|
+
type RecordingConsent = "notice" | "ok_or_leave" | "view_only_until_agree";
|
|
175
|
+
interface LivePolicy {
|
|
176
|
+
readonly chatMode: ChatMode;
|
|
177
|
+
readonly avLock: AvLock;
|
|
178
|
+
/** 0 = no limit. */
|
|
179
|
+
readonly timeLimitMinutes: number;
|
|
180
|
+
readonly timeLimitWarningMinutes: number;
|
|
181
|
+
readonly recordingConsent: RecordingConsent;
|
|
182
|
+
}
|
|
183
|
+
|
|
161
184
|
/**
|
|
162
185
|
* LISTEN-ONLY ATTENDANCE — being IN the room is never contingent on a device.
|
|
163
186
|
*
|
|
@@ -593,7 +616,7 @@ interface RoomChatMessage {
|
|
|
593
616
|
* packet, addressed to this participant. Rendered once, dismissible, in words.
|
|
594
617
|
*/
|
|
595
618
|
interface ModerationNotice {
|
|
596
|
-
readonly kind: "muted" | "ask-unmute" | "removed" | "role";
|
|
619
|
+
readonly kind: "muted" | "ask-unmute" | "removed" | "role" | "locked" | "capability";
|
|
597
620
|
readonly text: string;
|
|
598
621
|
readonly at: number;
|
|
599
622
|
}
|
|
@@ -723,7 +746,7 @@ interface MeetSnapshot {
|
|
|
723
746
|
* recording…" for the whole meeting while a perfectly healthy egress ran, and
|
|
724
747
|
* "Stopping recording…" forever after (MRI-C8). The server's transitions
|
|
725
748
|
* arrive on two transports now: the `meet_recordings` row for a member, and
|
|
726
|
-
*
|
|
749
|
+
* the room's replicated state for a guest, who has no database.
|
|
727
750
|
*/
|
|
728
751
|
readonly recording: RecordingState;
|
|
729
752
|
readonly recordingStartedBy: UserId | null;
|
|
@@ -760,6 +783,16 @@ interface MeetSnapshot {
|
|
|
760
783
|
readonly waitingCount: number;
|
|
761
784
|
/** S8: what the host's Leave offers in this meeting (from the token's `leave_policy`). */
|
|
762
785
|
readonly leavePolicy: LeavePolicy;
|
|
786
|
+
/** The meeting's rules as they are RIGHT NOW (chat mode, attendee lock, time limit), read live while in the call. */
|
|
787
|
+
readonly livePolicy: LivePolicy;
|
|
788
|
+
/** host-reclaim: this person is the meeting's owner and may take the host powers back (Zoom rules). */
|
|
789
|
+
readonly canReclaim: boolean;
|
|
790
|
+
/** rec-consent-gate: this person agreed to the recording that is running. */
|
|
791
|
+
readonly recordingConsentGiven: boolean;
|
|
792
|
+
/** When this run started (epoch ms), so every screen counts a time limit down together. */
|
|
793
|
+
readonly sessionStartedAt: number | null;
|
|
794
|
+
/** True from the moment a host muted THIS microphone until the person turns it on themselves. */
|
|
795
|
+
readonly mutedByHost: boolean;
|
|
763
796
|
/** The last thing a host did to THIS participant, in words. Dismissible. */
|
|
764
797
|
readonly moderationNotice: ModerationNotice | null;
|
|
765
798
|
/**
|
|
@@ -821,6 +854,10 @@ interface MeetSnapshot {
|
|
|
821
854
|
* last device change and an offered new device. Written only by `media-supervisor.ts`.
|
|
822
855
|
*/
|
|
823
856
|
readonly mediaRegion: MediaRegionState;
|
|
857
|
+
/** `captions-toggle`: THIS viewer wants captions. Local to the viewer; never sent to the room. */
|
|
858
|
+
readonly captionsOn: boolean;
|
|
859
|
+
/** Why asking for captions failed, in the server's words (`captions-unavailable`). */
|
|
860
|
+
readonly captionsRefusal: NoteTakerRefusal | null;
|
|
824
861
|
/** The last failure, with its remedy. Never null-and-hoping. */
|
|
825
862
|
readonly failure: {
|
|
826
863
|
readonly message: string;
|
|
@@ -976,6 +1013,14 @@ interface MeetAi {
|
|
|
976
1013
|
meetingId: MeetingId;
|
|
977
1014
|
roomName: RoomName;
|
|
978
1015
|
}): Promise<NoteTakerDispatch>;
|
|
1016
|
+
/**
|
|
1017
|
+
* Make sure the note-taker (the speech-to-text) is in the room because THIS viewer turned
|
|
1018
|
+
* captions on. Open to everyone in the meeting, guests included. Never throws: a refusal
|
|
1019
|
+
* is stored as `captionsRefusal` in the server's own words.
|
|
1020
|
+
*/
|
|
1021
|
+
requestCaptions(args: {
|
|
1022
|
+
meetingId: MeetingId;
|
|
1023
|
+
}): Promise<void>;
|
|
979
1024
|
/** Dismiss it. Nothing automatic brings a dismissed note-taker back (D9). */
|
|
980
1025
|
stopNoteTaker(args: {
|
|
981
1026
|
meetingId: MeetingId;
|
|
@@ -1608,8 +1653,7 @@ declare const ROOM_EVENTS: {
|
|
|
1608
1653
|
/**
|
|
1609
1654
|
* A host or co-host acted (Meet wave 2). Payload `{ meeting_id, kind, … }`:
|
|
1610
1655
|
* `muted {source, by}` · `ask-unmute {by}` · `removed {by}` — addressed to the
|
|
1611
|
-
* person concerned; `
|
|
1612
|
-
* role}` — to everyone.
|
|
1656
|
+
* person concerned; `role {identity, role}` — to everyone.
|
|
1613
1657
|
*/
|
|
1614
1658
|
readonly moderation: "matrx.meet.moderation";
|
|
1615
1659
|
/**
|
|
@@ -2877,6 +2921,8 @@ interface RoomToken {
|
|
|
2877
2921
|
readonly connectionPolicy?: ConnectionPolicy | undefined;
|
|
2878
2922
|
/** S8: what the host's Leave offers for this meeting (`host_leave_prompt`, `end_confirm`). */
|
|
2879
2923
|
readonly leavePolicy?: LeavePolicy | undefined;
|
|
2924
|
+
/** host-reclaim (`host_reclaim = prompt`): the returning owner may take the host powers back. */
|
|
2925
|
+
readonly canReclaim?: boolean | undefined;
|
|
2880
2926
|
}
|
|
2881
2927
|
|
|
2882
2928
|
interface TokenClientOptions {
|
|
@@ -2977,6 +3023,8 @@ declare const MEET_ROUTES: {
|
|
|
2977
3023
|
readonly noteTakerStop: "/api/v1/meet/agent/stop";
|
|
2978
3024
|
/** In-meeting Q&A. Streams NDJSON; body is `{meeting_id, question}` only. */
|
|
2979
3025
|
readonly intelligenceAsk: "/api/v1/meet/intelligence/ask";
|
|
3026
|
+
/** Anyone in the meeting (guests with the room pass included) asks for captions for themselves. */
|
|
3027
|
+
readonly noteTakerCaptions: "/api/v1/meet/agent/captions";
|
|
2980
3028
|
/** A host ends the meeting for everyone. Served by MRI-A6. */
|
|
2981
3029
|
readonly meetingEnd: "/api/v1/meet/end";
|
|
2982
3030
|
/**
|
|
@@ -3590,15 +3638,14 @@ declare function createWebEffectsStorage(key?: string): EffectsStorage;
|
|
|
3590
3638
|
*/
|
|
3591
3639
|
|
|
3592
3640
|
/** Every host power the server performs. One vocabulary with `services/meet/moderation.py`. */
|
|
3593
|
-
type ModerationAction = "mute" | "stop_video" | "stop_screen" | "mute_all" | "ask_unmute" | "ask_all_unmute" | "spotlight" | "
|
|
3641
|
+
type ModerationAction = "mute" | "stop_video" | "stop_screen" | "mute_all" | "ask_unmute" | "ask_all_unmute" | "spotlight" | "sync_presenter" | "raise_hand" | "lower_hand" | "lower_all_hands" | "make_cohost" | "make_presenter" | "revoke_presenter" | "set_av_lock" | "revoke_cohost" | "transfer_host" | "reclaim_host" | "rename" | "remove" | "report";
|
|
3594
3642
|
declare const MODERATION_ACTIONS: readonly ModerationAction[];
|
|
3595
3643
|
interface ModerationRequest {
|
|
3596
3644
|
readonly action: ModerationAction;
|
|
3597
3645
|
readonly identity?: ParticipantIdentity | null | undefined;
|
|
3598
3646
|
readonly name?: string | undefined;
|
|
3647
|
+
readonly value?: string | undefined;
|
|
3599
3648
|
readonly reason?: string | undefined;
|
|
3600
|
-
/** `present` only: true = I am presenting now, false = I stopped (S8). */
|
|
3601
|
-
readonly on?: boolean | undefined;
|
|
3602
3649
|
}
|
|
3603
3650
|
interface ModerationResult {
|
|
3604
3651
|
readonly action: ModerationAction;
|
|
@@ -3872,7 +3919,7 @@ declare function takeMoveRequest(store: CollabStoreLike): {
|
|
|
3872
3919
|
* a link follower whose role is `participant` renders `guest` (CORE-DESIGN §2.1); `presenter` /
|
|
3873
3920
|
* `viewer` render `participant` until the contract adopts them (§3.7 C3).
|
|
3874
3921
|
*/
|
|
3875
|
-
type ObservedRole = "host" | "cohost" | "participant" | "guest";
|
|
3922
|
+
type ObservedRole = "host" | "cohost" | "presenter" | "participant" | "guest";
|
|
3876
3923
|
/** `data-meet-phase` — the core's phase IS the contract value (S6a: no translation layer). */
|
|
3877
3924
|
type ObservedPhase = MeetPhase;
|
|
3878
3925
|
type ObservedConnection = ConnectionRegion;
|
|
@@ -3901,7 +3948,7 @@ interface ObserveInput {
|
|
|
3901
3948
|
* The reason comes from the media supervisor (S6c), which reads the browser's permission store: a
|
|
3902
3949
|
* kind the browser denies is `unavailable:denied` even when nothing tried to open it.
|
|
3903
3950
|
*/
|
|
3904
|
-
declare function observedDevice(track: LocalTrackState, permission?: PermissionReading): string;
|
|
3951
|
+
declare function observedDevice(track: LocalTrackState, permission?: PermissionReading, held?: "locked" | "muted_by_host" | null): string;
|
|
3905
3952
|
/**
|
|
3906
3953
|
* The phase the person is looking at: the store's phase, verbatim (CORE-DESIGN §3.1). The one
|
|
3907
3954
|
* derivation left is the ended meeting: a row that says it is over renders `ended` for anyone not
|