@ai-matrx/meet 0.8.1 → 0.10.0
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 +40 -0
- package/dist/{collab-Bss-_Jfp.d.cts → collab-C2R-kQnV.d.cts} +24 -13
- package/dist/{collab-Bss-_Jfp.d.ts → collab-C2R-kQnV.d.ts} +24 -13
- package/dist/{components-BmgstFx_.d.ts → components-CMtSekZS.d.ts} +1 -1
- package/dist/{components-BOUmOiPj.d.cts → components-DKHfkEVB.d.cts} +1 -1
- package/dist/core.cjs +452 -154
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +132 -41
- package/dist/core.d.ts +132 -41
- package/dist/core.js +452 -154
- package/dist/core.js.map +1 -1
- package/dist/index.cjs +452 -154
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +452 -154
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +550 -184
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +6 -5
- package/dist/react.d.ts +6 -5
- package/dist/react.js +550 -184
- package/dist/react.js.map +1 -1
- package/dist/skins/meet.cjs +141 -34
- package/dist/skins/meet.cjs.map +1 -1
- package/dist/skins/meet.d.cts +2 -2
- package/dist/skins/meet.d.ts +2 -2
- package/dist/skins/meet.js +141 -34
- package/dist/skins/meet.js.map +1 -1
- package/dist/styles.css +8 -0
- package/package.json +5 -5
package/dist/core.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { P as ParticipantIdentity, $ as NoteTakerState, a as MeetParticipant, M as MeetingRecord,
|
|
2
|
-
export { A as AccessTokenSource, k as CAPTION_LANGUAGES, n as CallablePerson, E as EMPTY_COLLAB, F as FILE_SESSION_PATH, J as JsonObject, q as JsonValue, r as MeetApiOptions, s as MeetApiRequest, t as MeetBreakoutBroadcast, u as MeetBreakoutPlan, v as MeetBreakoutRoom, w as MeetCollabSettings, x as MeetFileMedia, y as MeetPoll, z as MeetPollOption, B as MeetPollState, D as MeetQuestion, G as MeetQuestionState, H as MeetStroke, K as MeetingActivities, Y as MeetingNoteKind, a0 as ORGANIZATION_HEADER, a2 as OccurrenceState,
|
|
1
|
+
import { P as ParticipantIdentity, $ as NoteTakerState, a as MeetParticipant, M as MeetingRecord, a8 as RoomPhase, j as AdmissionState, e as ParticipantRole, a3 as ParticipantStanding, S as StageLayout, L as LobbyEntry, a7 as RecordingState, U as UserId, ax as RecordingSource, ac as TranscriptSegment, g as MeetingNote, W as WrapUpAnnouncement, i as CollabSnapshot, o as ConnectionQuality, h as MeetingId, R as RoomName, b as MeetApi, d as CallInvite, f as CallMode, O as OrganizationId, l as CallId, m as CallState, X as MeetingKind, a5 as RecordingPolicy, N as MeetingAttendee, a6 as RecordingRecord, _ as MeetingSettings, Q as MeetingChanges, a1 as OccurrenceOverride, Z as MeetingOccurrence, ad as UpcomingOccurrence, V as MeetingInvitee, I as InviteeInput, p as InviteeRole, a9 as RsvpAnswer, aa as RsvpInvitation, c as MeetIdentity, C as CollabPanel } from './collab-C2R-kQnV.cjs';
|
|
2
|
+
export { A as AccessTokenSource, k as CAPTION_LANGUAGES, n as CallablePerson, E as EMPTY_COLLAB, F as FILE_SESSION_PATH, J as JsonObject, q as JsonValue, r as MeetApiOptions, s as MeetApiRequest, t as MeetBreakoutBroadcast, u as MeetBreakoutPlan, v as MeetBreakoutRoom, w as MeetCollabSettings, x as MeetFileMedia, y as MeetPoll, z as MeetPollOption, B as MeetPollState, D as MeetQuestion, G as MeetQuestionState, H as MeetStroke, K as MeetingActivities, Y as MeetingNoteKind, a0 as ORGANIZATION_HEADER, a2 as OccurrenceState, a4 as ROLE_RANK, ab as RsvpState, T as TranscriptSource, ae as applyCollabPacket, af as asCallId, ag as asMeetingId, ah as asOrganizationId, ai as asParticipantIdentity, aj as asRoomName, ak as asUserId, al as assignedRoom, am as autoAssign, an as breakoutRemainingMs, ao as collabFromState, ap as createMeetApi, aq as defaultCaptionLanguage, ar as fileDownloadPath, as as isGuest, at as isHostRole, au as isLinkFollower, av as loadMeetingActivities, aw as withItem } from './collab-C2R-kQnV.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';
|
|
@@ -29,7 +29,13 @@ declare class MeetError extends Error {
|
|
|
29
29
|
/** What to DO. Rendered to the user for the device codes. */
|
|
30
30
|
readonly remedy: string;
|
|
31
31
|
readonly cause?: unknown;
|
|
32
|
-
|
|
32
|
+
/**
|
|
33
|
+
* The join gate's reason code (CORE-DESIGN §2.5) when the server named one: `not_found`,
|
|
34
|
+
* `cancelled`, `ended`, `locked`, `removed`, `lobby_rejects`, `not_invited`… The phase
|
|
35
|
+
* renders `refused:<reason>` (or `ended`) from it — never from the HTTP status.
|
|
36
|
+
*/
|
|
37
|
+
readonly reason: string | null;
|
|
38
|
+
constructor(code: MeetErrorCode, message: string, remedy: string, cause?: unknown, reason?: string | null);
|
|
33
39
|
/** True when retrying after the host re-establishes a session is the fix. */
|
|
34
40
|
get isRetryable(): boolean;
|
|
35
41
|
/** True when the user, not the code, must act — the UI shows `remedy`. */
|
|
@@ -330,14 +336,36 @@ interface RoomReaction {
|
|
|
330
336
|
*/
|
|
331
337
|
interface MeetGrants {
|
|
332
338
|
readonly role: ParticipantRole;
|
|
339
|
+
/** Where this joiner stands with the meeting (server-minted, beside the role). */
|
|
340
|
+
readonly standing?: ParticipantStanding | null;
|
|
333
341
|
readonly canRecord: boolean;
|
|
334
342
|
readonly canPublish: boolean;
|
|
335
343
|
readonly canSubscribe: boolean;
|
|
336
344
|
}
|
|
337
345
|
/** No token yet grants nothing. Never "assume host until told otherwise". */
|
|
338
346
|
declare const NO_GRANTS: MeetGrants;
|
|
347
|
+
/**
|
|
348
|
+
* S4 — THIS PERSON'S WAIT, as the server's state read (`GET /v1/meet/state`) last said it
|
|
349
|
+
* (CORE-DESIGN §2.6). Set while `phase === "lobby"`; the waiting screens read it, never a
|
|
350
|
+
* broadcast. `admission` is the row's own word: `waiting_host` · `knocking` · `denied` ·
|
|
351
|
+
* `expired` · `withdrawn` · `ended` (`admitted` is never held here — it is a join).
|
|
352
|
+
*/
|
|
353
|
+
interface MeetWaiting {
|
|
354
|
+
readonly admission: AdmissionState;
|
|
355
|
+
/** Is anyone who may admit in the room? null until the first read. */
|
|
356
|
+
readonly admittersPresent: boolean | null;
|
|
357
|
+
/** May a denied person ask again (`reknock_after_deny`)? */
|
|
358
|
+
readonly reknockAllowed: boolean;
|
|
359
|
+
readonly knockExpiresAt: string | null;
|
|
360
|
+
/** How often the core reads while waiting (`waiting_poll_seconds`). */
|
|
361
|
+
readonly pollSeconds: number;
|
|
362
|
+
/** The run's `live_version` at the last read. */
|
|
363
|
+
readonly liveVersion: number;
|
|
364
|
+
}
|
|
339
365
|
interface MeetSnapshot {
|
|
340
366
|
readonly phase: RoomPhase;
|
|
367
|
+
/** S4: this person's wait (see `MeetWaiting`); null outside the waiting room. */
|
|
368
|
+
readonly waiting: MeetWaiting | null;
|
|
341
369
|
readonly meeting: MeetingRecord | null;
|
|
342
370
|
readonly localIdentity: ParticipantIdentity | null;
|
|
343
371
|
/** The server's word on what THIS joiner may do. See `MeetGrants`. */
|
|
@@ -442,6 +470,8 @@ interface MeetSnapshot {
|
|
|
442
470
|
readonly failure: {
|
|
443
471
|
readonly message: string;
|
|
444
472
|
readonly remedy: string;
|
|
473
|
+
/** The join gate's reason code, when the server named one (CORE-DESIGN §2.5). */
|
|
474
|
+
readonly reason?: string | null;
|
|
445
475
|
} | null;
|
|
446
476
|
/**
|
|
447
477
|
* Meet wave 5: polls, Q&A, the shared whiteboard and the breakout plan — what the
|
|
@@ -733,9 +763,11 @@ declare const RPCS: {
|
|
|
733
763
|
readonly getOrCreateMeeting: "meet_get_or_create_meeting";
|
|
734
764
|
/** Resolve a durable public link, before/during/after its scheduled time. */
|
|
735
765
|
readonly meetingBySlug: "meet_meeting_by_slug";
|
|
736
|
-
readonly admit: "
|
|
766
|
+
readonly admit: "meet_admit";
|
|
767
|
+
readonly deny: "meet_deny";
|
|
768
|
+
readonly undeny: "meet_undeny";
|
|
769
|
+
readonly admitAll: "meet_admit_all";
|
|
737
770
|
readonly setLock: "meet_set_lock";
|
|
738
|
-
readonly endMeeting: "meet_end_meeting";
|
|
739
771
|
readonly recordConsent: "meet_record_consent";
|
|
740
772
|
/** Schedule with every setting at create; unset settings come from the knobs. */
|
|
741
773
|
readonly scheduleMeeting: "meet_schedule_meeting";
|
|
@@ -818,14 +850,16 @@ interface MeetRepository {
|
|
|
818
850
|
readonly items: readonly MeetingRecord[];
|
|
819
851
|
readonly hasMore: boolean;
|
|
820
852
|
}>;
|
|
821
|
-
|
|
853
|
+
/** S4: one decision on one waiting person; returns the row as it now stands. */
|
|
854
|
+
decideAdmission(args: {
|
|
822
855
|
meetingId: MeetingId;
|
|
823
856
|
identity: string;
|
|
824
|
-
|
|
857
|
+
decision: "admit" | "deny" | "undeny";
|
|
825
858
|
byUserId: UserId;
|
|
826
|
-
}): Promise<
|
|
859
|
+
}): Promise<MeetingAttendee>;
|
|
860
|
+
/** S4: admit everyone still waiting (not expired); returns the admitted rows. */
|
|
861
|
+
admitAll(meetingId: MeetingId, byUserId: UserId): Promise<readonly MeetingAttendee[]>;
|
|
827
862
|
setLock(meetingId: MeetingId, locked: boolean, byUserId: UserId): Promise<MeetingRecord>;
|
|
828
|
-
endMeeting(meetingId: MeetingId, byUserId: UserId): Promise<MeetingRecord>;
|
|
829
863
|
projectSegment(row: Row): TranscriptSegment;
|
|
830
864
|
projectNote(row: Row): MeetingNote;
|
|
831
865
|
/** One `meet_recordings` row, however it arrived (row or room packet). */
|
|
@@ -1113,14 +1147,15 @@ declare const MEET_EVENTS: {
|
|
|
1113
1147
|
readonly cancel: "mx.call.cancel";
|
|
1114
1148
|
/** You answered (or declined) on another device. Stop ringing here. */
|
|
1115
1149
|
readonly settled: "mx.call.settled";
|
|
1116
|
-
/**
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1150
|
+
/**
|
|
1151
|
+
* 🚨 S4 (CORE-DESIGN §2.6): the ONE room-channel event — payload-free "something changed,
|
|
1152
|
+
* read again". Nothing a person must see rides it: a waiting person learns admitted /
|
|
1153
|
+
* denied / expired / ended by READING their row (`GET /v1/meet/state`) on a timer and on
|
|
1154
|
+
* every hint. The four payload broadcasts (`mx.lobby.knock`, `mx.lobby.admission`,
|
|
1155
|
+
* `mx.room.lock`, `mx.room.recording`) are gone with their senders and receivers. The
|
|
1156
|
+
* server publishes the same event on the same topic (aidream `admission.room_topic`).
|
|
1157
|
+
*/
|
|
1158
|
+
readonly stateChanged: "mx.state.changed";
|
|
1124
1159
|
};
|
|
1125
1160
|
/**
|
|
1126
1161
|
* 🚨 `mx.meeting.transcript` and `mx.meeting.note` WERE declared here and
|
|
@@ -1758,14 +1793,12 @@ interface MeetingSessionOptions {
|
|
|
1758
1793
|
*/
|
|
1759
1794
|
onAdmitted?: (() => void) | undefined;
|
|
1760
1795
|
/**
|
|
1761
|
-
*
|
|
1762
|
-
*
|
|
1763
|
-
* automatically" to a person the host had already turned away (production
|
|
1764
|
-
* 2026-09-27). The provider wires it to `engine.rejoin()`: the server then
|
|
1765
|
-
* refuses the mint with its own sentence ("The host did not admit you…"),
|
|
1766
|
-
* so the words on screen are the server's decision, never the client's guess.
|
|
1796
|
+
* S4: the meeting pass this device holds (`x-meet-pass`) — what the state read and
|
|
1797
|
+
* `/leave` are authorized by. Null when no pass is held yet.
|
|
1767
1798
|
*/
|
|
1768
|
-
|
|
1799
|
+
resolvePass?: (() => string | null) | undefined;
|
|
1800
|
+
/** S4: mint again (Ask to join again / Rejoin from the waiting screens). */
|
|
1801
|
+
rejoin?: (() => Promise<void>) | undefined;
|
|
1769
1802
|
}
|
|
1770
1803
|
interface MeetingSession {
|
|
1771
1804
|
/** Subscribe to the room's out-of-band plane. Hosts see knocks; guests see verdicts. */
|
|
@@ -1778,10 +1811,24 @@ interface MeetingSession {
|
|
|
1778
1811
|
* permanently missing the minute nobody noticed.
|
|
1779
1812
|
*/
|
|
1780
1813
|
watchMeeting(meetingId: MeetingId): void;
|
|
1781
|
-
/** A guest (or a late arrival at a locked room) announces themselves. */
|
|
1782
|
-
knock(roomName: RoomName): void;
|
|
1783
1814
|
admit(entry: LobbyEntry, admitted: boolean): Promise<void>;
|
|
1815
|
+
/** S4: lift a denial so the person may knock again (`meet_undeny`). */
|
|
1816
|
+
undeny(entry: LobbyEntry): Promise<void>;
|
|
1784
1817
|
admitAll(): Promise<void>;
|
|
1818
|
+
/**
|
|
1819
|
+
* 🚨 S4 — THE WAIT READS SERVER TRUTH (CORE-DESIGN §2.6). While this tab waits, the state
|
|
1820
|
+
* read (`GET /v1/meet/state`) runs every `waiting_poll_seconds`, on every
|
|
1821
|
+
* `mx.state.changed` hint, on `online` and on visibility return. Admitted → a fresh mint
|
|
1822
|
+
* (`rejoin`); denied / expired / ended are what the row says, never a broadcast's guess.
|
|
1823
|
+
*/
|
|
1824
|
+
startWaiting(): void;
|
|
1825
|
+
stopWaiting(): void;
|
|
1826
|
+
/** One state read now (idempotent while one is in flight). */
|
|
1827
|
+
readState(): Promise<void>;
|
|
1828
|
+
/** Stop waiting: the row becomes `withdrawn` (`POST /v1/meet/leave {intent: "withdraw"}`). */
|
|
1829
|
+
withdraw(): Promise<void>;
|
|
1830
|
+
/** Ask again after a denial or an expired knock (only offered when allowed). */
|
|
1831
|
+
askAgain(): Promise<void>;
|
|
1785
1832
|
setLock(locked: boolean): Promise<MeetingRecord>;
|
|
1786
1833
|
/** End it for everyone, through the server (MRI-A6). */
|
|
1787
1834
|
endForEveryone(): Promise<EndMeetingResult>;
|
|
@@ -1899,16 +1946,30 @@ interface RoomToken {
|
|
|
1899
1946
|
readonly canRecord: boolean;
|
|
1900
1947
|
readonly isHost: boolean;
|
|
1901
1948
|
/**
|
|
1902
|
-
* 🚨 THE SERVER'S WORD ON WHO THIS JOINER IS (MRI-A11) — `host
|
|
1903
|
-
*
|
|
1904
|
-
*
|
|
1905
|
-
* its `matrx.participant.role` attribute, so the roster and this response
|
|
1906
|
-
* cannot disagree. A server that predates MRI-A11 sends no role, and the
|
|
1907
|
-
* fallback below reads the older `is_host` boolean rather than pretending.
|
|
1949
|
+
* 🚨 THE SERVER'S WORD ON WHO THIS JOINER IS (MRI-A11) — `host · cohost · presenter ·
|
|
1950
|
+
* participant · viewer` (CORE-DESIGN §2.1). The same string is minted into the LiveKit
|
|
1951
|
+
* token's participant metadata and its `matrx.participant.role` attribute.
|
|
1908
1952
|
*/
|
|
1909
1953
|
readonly role: ParticipantRole;
|
|
1954
|
+
/** Where this joiner stands with the meeting — beside the role, never inside it. */
|
|
1955
|
+
readonly standing: ParticipantStanding | null;
|
|
1956
|
+
/**
|
|
1957
|
+
* 🚨 THE MEETING PASS (CORE-DESIGN §2.5) — the credential for every aidream meet route,
|
|
1958
|
+
* sent as `x-meet-pass`. It is NOT the LiveKit token (`token`), which is for the media
|
|
1959
|
+
* connection only. Null for an ad-hoc call room (no meeting) or an older server.
|
|
1960
|
+
*/
|
|
1961
|
+
readonly meetingPass: string | null;
|
|
1962
|
+
readonly meetingPassExpiresAt: string | null;
|
|
1963
|
+
/** The run (`meet_sessions.id`) this join belongs to; null while waiting before any run. */
|
|
1964
|
+
readonly sessionId: string | null;
|
|
1910
1965
|
/** True when the server put this joiner in the lobby (D6). */
|
|
1911
1966
|
readonly lobby: boolean;
|
|
1967
|
+
/**
|
|
1968
|
+
* S4: what the mint wrote on the person row — `admitted` · `knocking` · `waiting_host`.
|
|
1969
|
+
* A waiting person then reads `GET /v1/meet/state` every `pollSeconds`.
|
|
1970
|
+
*/
|
|
1971
|
+
readonly admissionState?: AdmissionState | undefined;
|
|
1972
|
+
readonly pollSeconds?: number | undefined;
|
|
1912
1973
|
/**
|
|
1913
1974
|
* Meet wave 5: the breakout room this pass is for, or null for the main room. The
|
|
1914
1975
|
* pass is still keyed by the MEETING's room name — it is this person's pass for the
|
|
@@ -1952,6 +2013,11 @@ interface RoomTokenStorage {
|
|
|
1952
2013
|
}
|
|
1953
2014
|
/** `localStorage` when it exists; a no-op that SAYS so otherwise. */
|
|
1954
2015
|
declare function createWebRoomTokenStorage(onDiagnostic?: (message: string, remedy: string) => void): RoomTokenStorage;
|
|
2016
|
+
/**
|
|
2017
|
+
* The meeting pass a GUEST's browser kept for a room (MRF-1), or null — read from the same
|
|
2018
|
+
* storage `createWebRoomTokenStorage` writes. Used by "keep your notes" after sign-up.
|
|
2019
|
+
*/
|
|
2020
|
+
declare function rememberedMeetingPass(roomName: RoomName, storage?: RoomTokenStorage): string | null;
|
|
1955
2021
|
interface TokenRequest {
|
|
1956
2022
|
readonly roomName: RoomName;
|
|
1957
2023
|
readonly identity: MeetIdentity;
|
|
@@ -2007,7 +2073,7 @@ declare const MEET_ROUTES: {
|
|
|
2007
2073
|
/**
|
|
2008
2074
|
* THE POST-MEETING RECORD FOR A READER WITH NO DATABASE (MRF-1). A `GET`,
|
|
2009
2075
|
* authorized by the room token this device already holds, carried in the
|
|
2010
|
-
* `x-meet-
|
|
2076
|
+
* `x-meet-pass` header — never a query parameter, because a bearer
|
|
2011
2077
|
* credential in a URL lands in access logs, referrers and history.
|
|
2012
2078
|
*/
|
|
2013
2079
|
readonly record: "/api/v1/meet/record";
|
|
@@ -2015,7 +2081,7 @@ declare const MEET_ROUTES: {
|
|
|
2015
2081
|
readonly recordAccess: "/api/v1/meet/record/access";
|
|
2016
2082
|
/**
|
|
2017
2083
|
* KEEP YOUR NOTES (2026-10-01): a guest who just created an account presents
|
|
2018
|
-
* their kept pass in `x-meet-
|
|
2084
|
+
* their kept pass in `x-meet-pass` with their new session, and the
|
|
2019
2085
|
* meeting they attended becomes theirs to read. Idempotent; never a grant.
|
|
2020
2086
|
*/
|
|
2021
2087
|
readonly claim: "/api/v1/meet/claim";
|
|
@@ -2037,7 +2103,7 @@ declare const MEET_ROUTES: {
|
|
|
2037
2103
|
* Meet wave 2: EVERY in-meeting host power (mute, stop video, mute all, ask to
|
|
2038
2104
|
* unmute, spotlight, lower hands, co-host, hand over, rename, remove, report).
|
|
2039
2105
|
* Decided by the server from the meeting itself; a guest's pass rides
|
|
2040
|
-
* `x-meet-
|
|
2106
|
+
* `x-meet-pass`.
|
|
2041
2107
|
*/
|
|
2042
2108
|
readonly moderate: "/api/v1/meet/moderate";
|
|
2043
2109
|
/** Meet wave 2: the SAVED chat — `POST` sends to everyone, `GET ?meeting_id=` reads history. */
|
|
@@ -2049,11 +2115,23 @@ declare const MEET_ROUTES: {
|
|
|
2049
2115
|
readonly collab: "/api/v1/meet/collab";
|
|
2050
2116
|
/** Meet wave 5: translate finished caption lines into this viewer's language. */
|
|
2051
2117
|
readonly captionsTranslate: "/api/v1/meet/captions/translate";
|
|
2118
|
+
/**
|
|
2119
|
+
* S4 — THE STATE READ (CORE-DESIGN §2.6): `GET ?meeting_id=` with `x-meet-pass`. This
|
|
2120
|
+
* person's admission (lazy expiry applied), whether anyone who can admit is here, the run's
|
|
2121
|
+
* phase. Read every `waiting_poll_seconds` while waiting and on every `mx.state.changed`.
|
|
2122
|
+
*/
|
|
2123
|
+
readonly state: "/api/v1/meet/state";
|
|
2124
|
+
/** S4: `withdraw` (stop waiting) or `leave` (close this tab); the pass may ride in the body. */
|
|
2125
|
+
readonly leave: "/api/v1/meet/leave";
|
|
2126
|
+
/** S4: a pass holder (guests included) saw the recording notice, for this run. */
|
|
2127
|
+
readonly consent: "/api/v1/meet/consent";
|
|
2052
2128
|
};
|
|
2053
2129
|
/** A `MEET_ROUTES` template with its `{meeting_id}` filled in, URL-encoded. */
|
|
2054
2130
|
declare function meetingPath(template: string, meetingId: string): string;
|
|
2055
|
-
/** The header the
|
|
2056
|
-
declare const
|
|
2131
|
+
/** The header the meeting pass rides on (CORE-DESIGN §2.5). Pinned on both sides. */
|
|
2132
|
+
declare const MEETING_PASS_HEADER = "x-meet-pass";
|
|
2133
|
+
/** The `x-meet-pass` header for a held token, or no header at all. */
|
|
2134
|
+
declare function meetingPassHeaders(token: RoomToken | null | undefined): Record<string, string>;
|
|
2057
2135
|
declare function parseRoomToken(body: unknown, roomName: RoomName): RoomToken;
|
|
2058
2136
|
declare function createTokenClient(options: TokenClientOptions): TokenClient;
|
|
2059
2137
|
|
|
@@ -2319,6 +2397,11 @@ declare function loadGuestMeetingRecord(args: {
|
|
|
2319
2397
|
* claimed, and shares what guests may read (2026-10-01).
|
|
2320
2398
|
*/
|
|
2321
2399
|
session?: boolean;
|
|
2400
|
+
/**
|
|
2401
|
+
* THE SESSION-AWARE RECORD (CORE-DESIGN §2.3): one run of a series. Omitted = the server's
|
|
2402
|
+
* default (a one-off meeting's whole record; a series' latest ended run).
|
|
2403
|
+
*/
|
|
2404
|
+
sessionId?: string | null;
|
|
2322
2405
|
}): Promise<MeetingRecordBundle>;
|
|
2323
2406
|
/**
|
|
2324
2407
|
* A HOST chooses what guests may read of THIS meeting.
|
|
@@ -2476,7 +2559,7 @@ interface MeetingChatHistory {
|
|
|
2476
2559
|
* are never saved, by design, so they are never here. A refusal is returned as
|
|
2477
2560
|
* data — the record still renders everything else.
|
|
2478
2561
|
*/
|
|
2479
|
-
declare function loadMeetingChat(api: MeetApi, meetingId: MeetingId,
|
|
2562
|
+
declare function loadMeetingChat(api: MeetApi, meetingId: MeetingId, meetingPass?: string | null): Promise<MeetingChatHistory>;
|
|
2480
2563
|
/** One person the recap can go to, as the server resolved them. */
|
|
2481
2564
|
interface FollowUpRecipient {
|
|
2482
2565
|
/** Stable key for the choice: `user:<id>` or `email:<address>`. */
|
|
@@ -2694,6 +2777,8 @@ interface EffectsStorage {
|
|
|
2694
2777
|
*/
|
|
2695
2778
|
declare const PARTICIPANT_ROLE_ATTRIBUTE = "matrx.participant.role";
|
|
2696
2779
|
declare const PARTICIPANT_CAN_RECORD_ATTRIBUTE = "matrx.participant.can_record";
|
|
2780
|
+
/** Standing travels beside the role (CORE-DESIGN §2.1). Pinned by aidream's tests too. */
|
|
2781
|
+
declare const PARTICIPANT_STANDING_ATTRIBUTE = "matrx.participant.standing";
|
|
2697
2782
|
/**
|
|
2698
2783
|
* Metadata is SERVER-MINTED and therefore trusted; it is still parsed
|
|
2699
2784
|
* defensively, because a malformed blob must degrade a tile to "participant"
|
|
@@ -3002,13 +3087,19 @@ declare function takeMoveRequest(store: CollabStoreLike): {
|
|
|
3002
3087
|
* an absent attribute reads as "unknown", a guessed one would lie.
|
|
3003
3088
|
*/
|
|
3004
3089
|
|
|
3090
|
+
/**
|
|
3091
|
+
* `data-meet-role` is the HARNESS CONTRACT's vocabulary (host · cohost · participant · guest):
|
|
3092
|
+
* a link follower whose role is `participant` renders `guest` (CORE-DESIGN §2.1); `presenter` /
|
|
3093
|
+
* `viewer` render `participant` until the contract adopts them (§3.7 C3).
|
|
3094
|
+
*/
|
|
3095
|
+
type ObservedRole = "host" | "cohost" | "participant" | "guest";
|
|
3005
3096
|
/** `data-meet-phase` values this release renders (a subset of the contract's §2). */
|
|
3006
|
-
type ObservedPhase = "resolving" | `refused:${string}` | "prejoin" | "joining" | "waiting:knocking" | "in_call" | "disconnected" | "ended";
|
|
3097
|
+
type ObservedPhase = "resolving" | `refused:${string}` | "prejoin" | "joining" | "waiting:knocking" | "waiting:host_not_started" | "denied" | "knock_expired" | "left" | "in_call" | "disconnected" | "ended";
|
|
3007
3098
|
type ObservedConnection = "stable" | "reconnecting" | "server_unreachable";
|
|
3008
3099
|
interface MeetObservation {
|
|
3009
3100
|
readonly phase: ObservedPhase;
|
|
3010
3101
|
readonly reason: string | null;
|
|
3011
|
-
readonly role:
|
|
3102
|
+
readonly role: ObservedRole | "none";
|
|
3012
3103
|
readonly connection: ObservedConnection;
|
|
3013
3104
|
/** null = this tab does not know (it is not in the room). */
|
|
3014
3105
|
readonly hostPresent: boolean | null;
|
|
@@ -3045,4 +3136,4 @@ declare function participantAttributes(p: MeetParticipant): Record<string, strin
|
|
|
3045
3136
|
/** The listen-only notice's contract code, from why the microphone is off. */
|
|
3046
3137
|
declare function microphoneNoticeCode(track: LocalTrackState): "mic-blocked" | "device-lost" | null;
|
|
3047
3138
|
|
|
3048
|
-
export { ATTENDANCE_CSV_HEADER, AdmissionState, type AnnounceResult, type ApplyRoomEventArgs, type AskArgs, type AttendanceKind, type AttendanceRow, type AudioProcessing, CALL_INVITE_KIND, CALL_INVITE_VERSION, CONSENT_NOTICE_ATTRIBUTE, type CallCenter, type CallCenterOptions, CallId, CallInvite, type CallInviteHandlerOptions, type CallInvitePayload, CallMode, CallState, type CollabAction, CollabPanel, type CollabRequest, type CollabResult, type CollabRuntime, CollabSnapshot, type CollabStoreLike, ConnectionQuality, type CreateCallInviteInput, type CreateMeetingInput, DATA_TOPICS, DEFAULT_EFFECTS, DEFAULT_PAGE_SIZE, type DataTopic, type DeviceKind, type DeviceManager, type DeviceManagerOptions, type DeviceSnapshot, type DeviceStorage, type DriverConnectionState, type DriverParticipant, type DriverTrackKind, type DriverTranscription, END_MEETING_NOT_SERVED, type EffectsStorage, type EndMeetingResult, type FollowUpDraft, type FollowUpRecipient, type FollowUpSendResult, GUEST_RECORD_ACCESS_CHOICES, GUEST_RECORD_ACCESS_LEVELS, GUEST_RECORD_ACCESS_METADATA_KEY, GUEST_RECORD_NOT_SHARED, type GuestRecordAccess, type GuestRecordAccessResolution, type GuestRecordAccessSetting, IDLE_MEDIA, IDLE_TRACK, type InRoomClient, type InRoomClientOptions, InviteeInput, InviteeRole, type JoinRequest, LISTEN_ONLY_NOTICE, type LibraryRecording, type LiveKitDriverOptions, LobbyEntry, type LocalMediaState, type LocalTrackState, MEETING_INVITE_KIND, MEETING_INVITE_VERSION, MEETING_RECORD_GRACE_MS, MEET_ANSWER_CONTEXT_EVENT, MEET_ANSWER_EVENTS, MEET_EVENTS, MEET_REACTIONS, MEET_ROUTES, MEET_SCHEMA, MODERATION_ACTIONS, type MediaDevicesLike, type MediaEffects, type MediaUnavailable, type MeetAi, type MeetAiAnswer, type MeetAiOptions, type MeetAnswerCoverage, MeetApi, type MeetDevice, MeetError, type MeetErrorCode, type MeetEvent, type MeetGrants, MeetIdentity, type MeetObservation, MeetParticipant, type MeetRepository, type MeetRoomDriver, type MeetSnapshot, type MeetStore, MeetingAttendee, MeetingChanges, type MeetingChatHistory, MeetingId, type MeetingInviteHandlerOptions, type MeetingInvitePayload, MeetingInvitee, MeetingKind, MeetingNote, MeetingOccurrence, MeetingRecord, type MeetingRecordAnswer, type MeetingRecordBundle, type MeetingRecordCache, type MeetingRecordChange, type MeetingRecordFailure, type MeetingRecordParts, type MeetingRecordRestriction, type MeetingRecordRestrictionNotice, type MeetingRecordState, type MeetingSearchHit, type MeetingSearchSource, type MeetingSession, type MeetingSessionOptions, MeetingSettings, type ModerationAction, type ModerationNotice, type ModerationRequest, type ModerationResult, NOTE_TAKER_IDENTITY_PREFIX, NOTE_TAKER_METADATA_KEY, NO_GRANTS, type NameBook, type NoteTakerDispatch, type NoteTakerRefusal, NoteTakerState, type NoteTakerStatus, type ObserveInput, type ObservedConnection, type ObservedPhase, OccurrenceOverride, OrganizationId, PARTICIPANT_CAN_RECORD_ATTRIBUTE, PARTICIPANT_ROLE_ATTRIBUTE, ParticipantIdentity, ParticipantRole, REACTION_TTL_MS, REFUSED_ABSENCE, ROOM_EVENTS, ROOM_EVENT_PREFIX,
|
|
3139
|
+
export { ATTENDANCE_CSV_HEADER, AdmissionState, type AnnounceResult, type ApplyRoomEventArgs, type AskArgs, type AttendanceKind, type AttendanceRow, type AudioProcessing, CALL_INVITE_KIND, CALL_INVITE_VERSION, CONSENT_NOTICE_ATTRIBUTE, type CallCenter, type CallCenterOptions, CallId, CallInvite, type CallInviteHandlerOptions, type CallInvitePayload, CallMode, CallState, type CollabAction, CollabPanel, type CollabRequest, type CollabResult, type CollabRuntime, CollabSnapshot, type CollabStoreLike, ConnectionQuality, type CreateCallInviteInput, type CreateMeetingInput, DATA_TOPICS, DEFAULT_EFFECTS, DEFAULT_PAGE_SIZE, type DataTopic, type DeviceKind, type DeviceManager, type DeviceManagerOptions, type DeviceSnapshot, type DeviceStorage, type DriverConnectionState, type DriverParticipant, type DriverTrackKind, type DriverTranscription, END_MEETING_NOT_SERVED, type EffectsStorage, type EndMeetingResult, type FollowUpDraft, type FollowUpRecipient, type FollowUpSendResult, GUEST_RECORD_ACCESS_CHOICES, GUEST_RECORD_ACCESS_LEVELS, GUEST_RECORD_ACCESS_METADATA_KEY, GUEST_RECORD_NOT_SHARED, type GuestRecordAccess, type GuestRecordAccessResolution, type GuestRecordAccessSetting, IDLE_MEDIA, IDLE_TRACK, type InRoomClient, type InRoomClientOptions, InviteeInput, InviteeRole, type JoinRequest, LISTEN_ONLY_NOTICE, type LibraryRecording, type LiveKitDriverOptions, LobbyEntry, type LocalMediaState, type 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, type MediaDevicesLike, type MediaEffects, type MediaUnavailable, type MeetAi, type MeetAiAnswer, type MeetAiOptions, type MeetAnswerCoverage, MeetApi, type MeetDevice, MeetError, type MeetErrorCode, type MeetEvent, type MeetGrants, MeetIdentity, type MeetObservation, MeetParticipant, type MeetRepository, type MeetRoomDriver, type MeetSnapshot, type MeetStore, MeetingAttendee, MeetingChanges, type MeetingChatHistory, MeetingId, type MeetingInviteHandlerOptions, type MeetingInvitePayload, MeetingInvitee, MeetingKind, MeetingNote, MeetingOccurrence, MeetingRecord, type MeetingRecordAnswer, type MeetingRecordBundle, type MeetingRecordCache, type MeetingRecordChange, type MeetingRecordFailure, type MeetingRecordParts, type MeetingRecordRestriction, type MeetingRecordRestrictionNotice, type MeetingRecordState, type MeetingSearchHit, type MeetingSearchSource, type MeetingSession, type MeetingSessionOptions, MeetingSettings, type ModerationAction, type ModerationNotice, type ModerationRequest, type ModerationResult, NOTE_TAKER_IDENTITY_PREFIX, NOTE_TAKER_METADATA_KEY, NO_GRANTS, type NameBook, type NoteTakerDispatch, type NoteTakerRefusal, NoteTakerState, type NoteTakerStatus, type ObserveInput, type ObservedConnection, type ObservedPhase, OccurrenceOverride, OrganizationId, PARTICIPANT_CAN_RECORD_ATTRIBUTE, PARTICIPANT_ROLE_ATTRIBUTE, PARTICIPANT_STANDING_ATTRIBUTE, ParticipantIdentity, ParticipantRole, ParticipantStanding, REACTION_TTL_MS, REFUSED_ABSENCE, ROOM_EVENTS, ROOM_EVENT_PREFIX, RPCS, type RecordingController, type RecordingControllerOptions, RecordingPolicy, RecordingRecord, RecordingState, type RepositoryOptions, type RoomChatMessage, type RoomDriverFactory, type RoomDriverHandlers, type RoomEngine, type RoomEngineOptions, type RoomEventOutcome, type RoomEventTopic, RoomName, RoomPhase, type RoomReaction, type RoomToken, type RoomTokenStorage, RsvpAnswer, RsvpInvitation, type ScheduleMeetingInput, type Stage, type StageArgs, StageLayout, TABLES, TRANSCRIPTION_ATTRIBUTES, TRANSCRIPTION_TOPIC, type TokenClient, type TokenClientOptions, type TokenRequest, type TranscriptBlock, type TranscriptFormat, type TranscriptMatch, TranscriptSegment, UpcomingOccurrence, UserId, type VideoEffect, WrapUpAnnouncement, type WrapUpStatus, absenceSentence, activeWrapUpSummary, activityAttention, announceMeeting, applyRoomEvent, assembleMeetingRecord, attendanceCsv, attendanceReport, attendanceTotals, attendeeKey, availableActivities, callInviteAction, callInviteText, callStateLabel, canModerate, canModerateParticipant, canTransition, captionSegment, changesPatch, clockPosition, computeStage, countLabel, createCallCenter, createCallInviteHandler, createDeviceManager, createInRoomClient, createLiveKitDriver, createMeetAi, createMeetRepository, createMeetStore, createMeetingInviteHandler, createMeetingRecordCache, createMeetingSession, createMemoryDeviceStorage, createRecordingController, createRoomEngine, createTokenClient, createWebDeviceStorage, createWebEffectsStorage, createWebRoomTokenStorage, displayNameFor, gridColumns, groupTranscript, guestRecordAccessExplanation, guestRecordAccessLabel, guestRecordAccessSetting, hasEnded, hostUserIds, invalidResponse, isGuestIdentity, isListenOnly, isNoteTaker, isRealName, isRoomEventTopic, learnName, learnNames, listenOnlyNotice, loadFollowUpDraft, loadGuestMeetingRecord, loadMeetingChat, loadMeetingRecord, loadMeetingRecordParts, mapConnectionState, mapQuality, meetingInviteAction, meetingLength, meetingLink, meetingPassHeaders, meetingPath, meetingSlug, meetingTopic, meetingWhen, mergeCaption, mergeRecord, microphoneNoticeCode, moveToRoom, nextTranslationBatch, normalizeDeviceError, normalizeMeetError, normalizeSpoken, noteTakerIdentity, noteTakerLabel, noteTakerParticipant, noteTakerStatus, notesDocument, observe as observeMeeting, observedDevice, observedPhase, observedQuality, orderParticipants, parseRoomToken, participantAttributes, participantSummary, performCollab, playableRecordingFileId, projectInvitee, projectLibraryRecording, projectNote, projectOccurrence, projectOverride, projectParticipant, projectRsvpInvitation, projectSearchHit, projectSegment, projectUpcoming, pushMeetingToGoogleCalendar, readServerRefusal, readableTranscript, recordingLabel, recordingNotice, recordingOffsetMs, rememberedMeetingPass, roleOf, roomTopic, rootAttributes, searchTranscript, sendFollowUp, setCaptionLanguage, setGuestRecordAccess, settingsPatch, snapshotParticipant, snippetRuns, staticObservation, summarizeMeetingRecordRestrictions, takeMoveRequest, takePanelRequest, transcriptDocument, unavailableFrom, uniqueAttendees, untranslatedLines, userTopic, wasRefused, wrapUpStatus };
|