@ai-matrx/meet 0.7.84 → 0.7.85
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 +26 -0
- package/README.md +13 -7
- package/dist/collab-Bss-_Jfp.d.cts +805 -0
- package/dist/collab-Bss-_Jfp.d.ts +805 -0
- package/dist/components-BOUmOiPj.d.cts +240 -0
- package/dist/components-BmgstFx_.d.ts +240 -0
- package/dist/core.cjs +6737 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.d.cts +3048 -0
- package/dist/core.d.ts +3048 -0
- package/dist/core.js +6704 -0
- package/dist/core.js.map +1 -0
- package/dist/index.cjs +79 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -3780
- package/dist/index.d.ts +5 -3780
- package/dist/index.js +79 -0
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +461 -590
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +77 -365
- package/dist/react.d.ts +77 -365
- package/dist/react.js +405 -547
- package/dist/react.js.map +1 -1
- package/dist/skins/meet.cjs +4647 -0
- package/dist/skins/meet.cjs.map +1 -0
- package/dist/skins/meet.d.cts +113 -0
- package/dist/skins/meet.d.ts +113 -0
- package/dist/skins/meet.js +4628 -0
- package/dist/skins/meet.js.map +1 -0
- package/package.json +26 -5
package/dist/react.d.ts
CHANGED
|
@@ -1,51 +1,13 @@
|
|
|
1
|
-
import { ReactNode
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
2
|
import { MessagingSupabaseClient } from '@ai-matrx/messaging';
|
|
3
|
-
import { MeetStore, RoomEngine, CallCenter, MeetingSession, InRoomClient, RecordingController, DeviceManager, MeetRepository, TokenClient, MeetAi,
|
|
4
|
-
export { ATTENDANCE_CSV_HEADER,
|
|
3
|
+
import { MeetStore, RoomEngine, CallCenter, MeetingSession, InRoomClient, RecordingController, DeviceManager, MeetRepository, TokenClient, MeetAi, RoomDriverFactory, DeviceSnapshot, MeetSnapshot, ObservedPhase, MeetObservation, GuestRecordAccessSetting, GuestRecordAccessResolution, ModerationRequest, ModerationResult, MediaEffects, NoteTakerStatus, MeetAnswerCoverage, MeetingRecordBundle, JoinRequest, MeetingRecordCache, LocalMediaState, ModerationNotice, Stage, CollabRequest } from './core.js';
|
|
4
|
+
export { ATTENDANCE_CSV_HEADER, AnnounceResult, ApplyRoomEventArgs, AskArgs, AttendanceKind, AttendanceRow, AudioProcessing, CALL_INVITE_KIND, CALL_INVITE_VERSION, CONSENT_NOTICE_ATTRIBUTE, CallCenterOptions, CallInviteHandlerOptions, CallInvitePayload, CollabAction, CollabResult, CollabRuntime, CollabStoreLike, CreateCallInviteInput, CreateMeetingInput, DATA_TOPICS, DEFAULT_EFFECTS, DEFAULT_PAGE_SIZE, DataTopic, DeviceKind, DeviceManagerOptions, DeviceStorage, DriverConnectionState, DriverParticipant, DriverTrackKind, DriverTranscription, END_MEETING_NOT_SERVED, EffectsStorage, EndMeetingResult, FollowUpDraft, FollowUpRecipient, FollowUpSendResult, GUEST_RECORD_ACCESS_CHOICES, GUEST_RECORD_ACCESS_LEVELS, GUEST_RECORD_ACCESS_METADATA_KEY, GUEST_RECORD_NOT_SHARED, GuestRecordAccess, IDLE_MEDIA, IDLE_TRACK, InRoomClientOptions, LISTEN_ONLY_NOTICE, LibraryRecording, LiveKitDriverOptions, 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, MediaDevicesLike, MediaUnavailable, MeetAiAnswer, MeetAiOptions, MeetDevice, MeetError, MeetErrorCode, MeetEvent, MeetGrants, MeetRoomDriver, MeetingChatHistory, MeetingInviteHandlerOptions, MeetingInvitePayload, MeetingRecordAnswer, MeetingRecordChange, MeetingRecordFailure, MeetingRecordParts, MeetingRecordRestriction, MeetingRecordRestrictionNotice, MeetingRecordState, MeetingSearchHit, MeetingSearchSource, MeetingSessionOptions, ModerationAction, NOTE_TAKER_IDENTITY_PREFIX, NOTE_TAKER_METADATA_KEY, NO_GRANTS, NameBook, NoteTakerDispatch, NoteTakerRefusal, ObserveInput, ObservedConnection, PARTICIPANT_CAN_RECORD_ATTRIBUTE, PARTICIPANT_ROLE_ATTRIBUTE, REACTION_TTL_MS, REFUSED_ABSENCE, ROOM_EVENTS, ROOM_EVENT_PREFIX, ROOM_TOKEN_HEADER, RPCS, RecordingControllerOptions, RepositoryOptions, RoomChatMessage, RoomDriverHandlers, RoomEngineOptions, RoomEventOutcome, RoomEventTopic, RoomReaction, RoomToken, RoomTokenStorage, ScheduleMeetingInput, StageArgs, TABLES, TRANSCRIPTION_ATTRIBUTES, TRANSCRIPTION_TOPIC, TokenClientOptions, TokenRequest, TranscriptBlock, TranscriptFormat, TranscriptMatch, VideoEffect, 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, meetingPath, meetingSlug, meetingTopic, meetingWhen, mergeCaption, mergeRecord, microphoneNoticeCode, moveToRoom, 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, recordingLabel, recordingNotice, recordingOffsetMs, roleOf, roomTopic, rootAttributes, searchTranscript, sendFollowUp, setCaptionLanguage, setGuestRecordAccess, settingsPatch, snapshotParticipant, snippetRuns, staticObservation, summarizeMeetingRecordRestrictions, takeMoveRequest, takePanelRequest, transcriptDocument, unavailableFrom, uniqueAttendees, untranslatedLines, userTopic, wasRefused, wrapUpStatus } from './core.js';
|
|
5
|
+
import { b as MeetApi, c as MeetIdentity, A as AccessTokenSource, d as CallInvite, U as UserId, e as ParticipantRole, M as MeetingRecord, P as ParticipantIdentity, T as TranscriptSource, f as CallMode, a as MeetParticipant, L as LobbyEntry, R as RoomName, g as MeetingNote, W as WrapUpAnnouncement, S as StageLayout, h as MeetingId, O as OrganizationId, i as CollabSnapshot, C as CollabPanel } from './collab-Bss-_Jfp.js';
|
|
6
|
+
export { j as AdmissionState, k as CAPTION_LANGUAGES, l as CallId, m as CallState, n as CallablePerson, o as ConnectionQuality, E as EMPTY_COLLAB, F as FILE_SESSION_PATH, I as InviteeInput, p as InviteeRole, 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, N as MeetingAttendee, Q as MeetingChanges, V as MeetingInvitee, X as MeetingKind, Y as MeetingNoteKind, Z as MeetingOccurrence, _ as MeetingSettings, $ as NoteTakerState, a0 as ORGANIZATION_HEADER, a1 as OccurrenceOverride, a2 as OccurrenceState, a3 as ROLE_RANK, a4 as RecordingPolicy, a5 as RecordingRecord, a6 as RecordingState, a7 as RoomPhase, a8 as RsvpAnswer, a9 as RsvpInvitation, aa as RsvpState, ab as TranscriptSegment, ac as UpcomingOccurrence, ad as applyCollabPacket, ae as asCallId, af as asMeetingId, ag as asOrganizationId, ah as asParticipantIdentity, ai as asRoomName, aj as asUserId, ak as assignedRoom, al as autoAssign, am as breakoutRemainingMs, an as collabFromState, ao as createMeetApi, ap as defaultCaptionLanguage, aq as fileDownloadPath, ar as isGuest, as as isHostRole, at as loadMeetingActivities, au as withItem } from './collab-Bss-_Jfp.js';
|
|
7
|
+
export { G as GuestRecordAccessControl } from './components-BmgstFx_.js';
|
|
5
8
|
import '@ai-matrx/realtime';
|
|
6
9
|
import 'livekit-client';
|
|
7
10
|
|
|
8
|
-
/**
|
|
9
|
-
* `<MeetProvider>` — the one place an app wires calls and meetings (R7).
|
|
10
|
-
*
|
|
11
|
-
* THE ONE-HOUR INTEGRATION CONTRACT is this component's job: a host passes a
|
|
12
|
-
* Supabase client, who they are, their org, and aidream's base URL. Everything
|
|
13
|
-
* else — the repository, the realtime manager and its three channels, the token
|
|
14
|
-
* client, the room engine, the call center, the meeting session, the recording
|
|
15
|
-
* controller, the device manager, the AI surface — is constructed and owned
|
|
16
|
-
* here.
|
|
17
|
-
*
|
|
18
|
-
* What a host may inject is IDENTITY and app chrome: session source, a
|
|
19
|
-
* navigator, a notification sink. It may NOT inject an agent id — as of 0.3.0
|
|
20
|
-
* there is no prop for one, because which agent answers is a Mandate binding
|
|
21
|
-
* the SERVER resolves (D2). What a host must NEVER have to inject is
|
|
22
|
-
* behavior — if you find yourself catching a package error, retrying a package
|
|
23
|
-
* call, or branching on a package quirk in host code, that logic belongs in
|
|
24
|
-
* here (C22).
|
|
25
|
-
*
|
|
26
|
-
* 🚨 THE PROVIDER'S LIFETIME IS `client` + the SESSION'S user (or `guestName`)
|
|
27
|
-
* + `organizationId` + `baseUrl`, AND NOTHING ELSE. Hosts pass fresh function
|
|
28
|
-
* literals for `onDiagnostic` and `accessToken` on every render; keying the
|
|
29
|
-
* runtime on those identities would tear down and rebuild every channel — and
|
|
30
|
-
* drop the call in progress — on every parent re-render.
|
|
31
|
-
*
|
|
32
|
-
* 🚨 THERE IS NO `userId` PROP, AND THERE NEVER WILL BE AGAIN (DD-240, 0.6.0).
|
|
33
|
-
* The acting user is read from `client`'s own session — the same client that
|
|
34
|
-
* mints the JWT on every request — so the id in a `p_user_id` argument and the
|
|
35
|
-
* id in the token cannot disagree. Through 0.5.x this was a prop, every host
|
|
36
|
-
* filled it from a copy in its own state, and a rotated auth cookie left that
|
|
37
|
-
* copy naming an account the tab could no longer prove it was:
|
|
38
|
-
* `meet_pending_call_invites` refused it at 403 with "the acting user … is not
|
|
39
|
-
* the authenticated user", 8.8 h and 32.9 h into two tabs' lives. The whole
|
|
40
|
-
* story is in `../core/session-identity.ts`.
|
|
41
|
-
*
|
|
42
|
-
* 🚨 A GUEST IS A FIRST-CLASS IDENTITY (D6), not a degraded user. Pass
|
|
43
|
-
* `guestName` and the provider builds a runtime with no calling surface and no
|
|
44
|
-
* host powers, which is exactly what a link-follower needs — and, because a
|
|
45
|
-
* guest has no account at all, the guest lane never reads the session. Nothing
|
|
46
|
-
* downstream branches on "is this a real user".
|
|
47
|
-
*/
|
|
48
|
-
|
|
49
11
|
interface MeetDiagnostic {
|
|
50
12
|
readonly level: "info" | "warn" | "error";
|
|
51
13
|
readonly message: string;
|
|
@@ -219,7 +181,7 @@ interface UseRoomResult {
|
|
|
219
181
|
}
|
|
220
182
|
declare function useRoom(): UseRoomResult;
|
|
221
183
|
/** The stage, recomputed only when the roster or the layout actually changes. */
|
|
222
|
-
declare function useStage(pageSize?: number): Stage
|
|
184
|
+
declare function useStage(pageSize?: number): Stage;
|
|
223
185
|
/**
|
|
224
186
|
* Attach a participant's media to an element. The returned ref callback's
|
|
225
187
|
* CLEANUP is the detach — there is nothing a consumer can forget to call.
|
|
@@ -517,170 +479,16 @@ interface UseGuestRecordAccessResult {
|
|
|
517
479
|
declare function useGuestRecordAccess(meeting: MeetingRecord | null): UseGuestRecordAccessResult;
|
|
518
480
|
|
|
519
481
|
/**
|
|
520
|
-
*
|
|
521
|
-
* build the rest — the whole meeting surface ships here, because per THE
|
|
522
|
-
* ALL-INCLUSIVE LAW a package that withholds its components withholds its
|
|
523
|
-
* product.
|
|
482
|
+
* `<MeetingSkinRoot>` — the meeting page's one entry (CORE-DESIGN §5.3, S1).
|
|
524
483
|
*
|
|
525
|
-
*
|
|
526
|
-
*
|
|
527
|
-
*
|
|
528
|
-
*
|
|
529
|
-
*
|
|
530
|
-
* - Safe-area insets on the control bar, so the hang-up button is not under the
|
|
531
|
-
* home indicator.
|
|
532
|
-
* - 44px touch targets, and 16px input text (anything smaller zooms iOS Safari
|
|
533
|
-
* on focus, which in a meeting looks like the app broke).
|
|
534
|
-
* - Semantic tokens only. There is not one hardcoded color in the package.
|
|
535
|
-
* - Real loading states and no dead ends: a control the actor cannot use is
|
|
536
|
-
* ABSENT, never disabled-looking, and never a button that will be refused.
|
|
484
|
+
* Everything that is not a look lives here, once, for every skin: the inert
|
|
485
|
+
* guard, the observation root (S0), watching the room and the meeting's durable
|
|
486
|
+
* feed, seeding the store with the row the consumer resolved, and the ended
|
|
487
|
+
* meeting's record (a skin-external surface). It then renders the viewer's
|
|
488
|
+
* skin — only `meet` until S9 adds the switcher.
|
|
537
489
|
*/
|
|
538
490
|
|
|
539
|
-
|
|
540
|
-
name: string;
|
|
541
|
-
url?: string | null;
|
|
542
|
-
size?: number;
|
|
543
|
-
}): ReactNode;
|
|
544
|
-
declare function ControlButton({ label, active, danger, onClick, children, }: {
|
|
545
|
-
label: string;
|
|
546
|
-
active?: boolean;
|
|
547
|
-
danger?: boolean;
|
|
548
|
-
onClick: () => void;
|
|
549
|
-
children: ReactNode;
|
|
550
|
-
}): ReactNode;
|
|
551
|
-
/**
|
|
552
|
-
* The recording indicator. Rendered for EVERY participant, guests included —
|
|
553
|
-
* there is no prop that hides it (R5). Consent is a property of the package.
|
|
554
|
-
*/
|
|
555
|
-
declare function RecordingIndicator(): ReactNode;
|
|
556
|
-
declare function ConnectionDot({ quality }: {
|
|
557
|
-
quality: string;
|
|
558
|
-
}): ReactNode;
|
|
559
|
-
declare function ParticipantTile({ participant, featured, }: {
|
|
560
|
-
participant: MeetParticipant;
|
|
561
|
-
featured?: boolean;
|
|
562
|
-
}): ReactNode;
|
|
563
|
-
/**
|
|
564
|
-
* CONNECTION QUALITY, always legible (Meet wave 2). Four bars, like every phone:
|
|
565
|
-
* a stable good connection is quiet (the bars are there, faint), and a poor or
|
|
566
|
-
* lost one is loud. `unknown` draws nothing — a guess is not a reading.
|
|
567
|
-
*/
|
|
568
|
-
declare function QualityBars({ quality }: {
|
|
569
|
-
quality: string;
|
|
570
|
-
}): ReactNode;
|
|
571
|
-
declare function Stage({ pageSize }: {
|
|
572
|
-
pageSize?: number;
|
|
573
|
-
}): ReactNode;
|
|
574
|
-
/** Meet's own reaction set, in its order. */
|
|
575
|
-
declare const MEET_REACTIONS: readonly string[];
|
|
576
|
-
/**
|
|
577
|
-
* THE CONTROL BAR — one row, the same in the package's room and in any host
|
|
578
|
-
* layout that composes it (the Board). Everything a person does in a meeting is
|
|
579
|
-
* reachable from here or from the panels it opens, and every keyboard shortcut
|
|
580
|
-
* is bound here, so a layout that renders this bar has all of it.
|
|
581
|
-
*/
|
|
582
|
-
declare function ControlBar({ onLeave }: {
|
|
583
|
-
onLeave?: () => void;
|
|
584
|
-
}): ReactNode;
|
|
585
|
-
/**
|
|
586
|
-
* WHAT FLOATS OVER THE MEETING, in every layout (Meet wave 2): the reactions
|
|
587
|
-
* everyone sends, and what a host just did to THIS person — "the host is asking
|
|
588
|
-
* you to unmute" with the Unmute button right there, which is the whole point.
|
|
589
|
-
*/
|
|
590
|
-
declare function MeetingOverlays(): ReactNode;
|
|
591
|
-
/** Every shortcut, on one sheet. Opened by Shift+? or from More options. */
|
|
592
|
-
declare function ShortcutsSheet({ onClose }: {
|
|
593
|
-
onClose: () => void;
|
|
594
|
-
}): ReactNode;
|
|
595
|
-
/**
|
|
596
|
-
* IN-MEETING CHAT (Meet wave 2). A message to everyone is SAVED with the
|
|
597
|
-
* meeting — a late joiner scrolls up and reads it, and it is part of the record.
|
|
598
|
-
* A private message goes to one person only and is never saved; the composer
|
|
599
|
-
* says which of the two you are about to send.
|
|
600
|
-
*/
|
|
601
|
-
declare function ChatPanel({ onClose, to, onTo, }: {
|
|
602
|
-
onClose: () => void;
|
|
603
|
-
to?: ParticipantIdentity | null;
|
|
604
|
-
onTo?: (identity: ParticipantIdentity | null) => void;
|
|
605
|
-
}): ReactNode;
|
|
606
|
-
declare function PeoplePanel({ onClose, onMessage, }: {
|
|
607
|
-
onClose: () => void;
|
|
608
|
-
onMessage?: (identity: ParticipantIdentity) => void;
|
|
609
|
-
}): ReactNode;
|
|
610
|
-
/**
|
|
611
|
-
* EVERYTHING YOU CAN DO ABOUT ONE PERSON (Meet wave 2), in one menu — on their
|
|
612
|
-
* tile and on their People row. An item appears only when it would be honoured:
|
|
613
|
-
* the rank ladder decides moderation (a co-host never sees "Remove" on the host),
|
|
614
|
-
* only the host sees "Make host", and nobody sees a control that the server
|
|
615
|
-
* would refuse. Removing someone and handing the meeting over NAME THEIR
|
|
616
|
-
* CONSEQUENCE first, inline — never a browser dialog.
|
|
617
|
-
*/
|
|
618
|
-
declare function PersonMenu({ participant, onClose, onMessage, placement, }: {
|
|
619
|
-
participant: MeetParticipant;
|
|
620
|
-
onClose: () => void;
|
|
621
|
-
onMessage?: (identity: ParticipantIdentity) => void;
|
|
622
|
-
placement?: "up" | "down";
|
|
623
|
-
}): ReactNode;
|
|
624
|
-
/**
|
|
625
|
-
* AUDIO, VIDEO AND EFFECTS (Meet wave 2) — the devices in use, a live
|
|
626
|
-
* microphone level, a speaker test, noise suppression and the camera
|
|
627
|
-
* background. Every change applies to the live meeting at once and is
|
|
628
|
-
* remembered in this browser.
|
|
629
|
-
*/
|
|
630
|
-
declare function SettingsPanel({ onClose }: {
|
|
631
|
-
onClose: () => void;
|
|
632
|
-
}): ReactNode;
|
|
633
|
-
/** The waiting room. Rendered for hosts only — a participant sees nothing. */
|
|
634
|
-
declare function LobbyPanel(): ReactNode;
|
|
635
|
-
/**
|
|
636
|
-
* THE MEETING ASSISTANT (R4). The note-taker's state, what the meeting has
|
|
637
|
-
* decided so far, the wrap-up, and a question box whose answer arrives token by
|
|
638
|
-
* token.
|
|
639
|
-
*
|
|
640
|
-
* Nothing on this panel is computed here: notes, decisions and action items are
|
|
641
|
-
* durable rows delivered by Postgres Changes, and the answer is streamed from
|
|
642
|
-
* `/intelligence/ask`, which builds it from those same rows. The captions this
|
|
643
|
-
* client can see are never sent anywhere (D16).
|
|
644
|
-
*/
|
|
645
|
-
declare function AiPanel({ onClose }: {
|
|
646
|
-
onClose: () => void;
|
|
647
|
-
}): ReactNode;
|
|
648
|
-
/**
|
|
649
|
-
* LIVE CAPTIONS. The last few lines, over the stage, for anyone who reads
|
|
650
|
-
* faster than they hear.
|
|
651
|
-
*
|
|
652
|
-
* They are HINTS (D16) — the durable segment replaces the line it captioned as
|
|
653
|
-
* soon as the row lands — so an unsettled line renders differently from a
|
|
654
|
-
* settled one and nothing downstream ever reads this list.
|
|
655
|
-
*/
|
|
656
|
-
declare function Captions({ lines }: {
|
|
657
|
-
lines?: number;
|
|
658
|
-
}): ReactNode;
|
|
659
|
-
/**
|
|
660
|
-
* CONSENT IS NOT A PROP (README rule 8, D10).
|
|
661
|
-
*
|
|
662
|
-
* Whenever an agent participant is in the room, EVERY participant sees this —
|
|
663
|
-
* host, member and guest alike. There is no prop that hides it and no host code
|
|
664
|
-
* involved: through 0.2.1 the first real consumer had to write this banner
|
|
665
|
-
* itself by reading `isAgent` off the roster, which is exactly the massage C22
|
|
666
|
-
* forbids.
|
|
667
|
-
*/
|
|
668
|
-
declare function ConsentNotice(): ReactNode;
|
|
669
|
-
/**
|
|
670
|
-
* LISTEN-ONLY ATTENDANCE, said out loud. Shown whenever the local participant
|
|
671
|
-
* is in the room publishing no microphone — whether they chose that or the
|
|
672
|
-
* browser refused. When it was refused, the browser's own reason and the remedy
|
|
673
|
-
* are shown too, because "others can't hear you" without "and here is why"
|
|
674
|
-
* leaves someone clicking a mute button that cannot work.
|
|
675
|
-
*/
|
|
676
|
-
declare function AttendanceNotice(): ReactNode;
|
|
677
|
-
declare function PreJoin(props: {
|
|
678
|
-
roomName: RoomName;
|
|
679
|
-
meetingId?: string;
|
|
680
|
-
slug?: string;
|
|
681
|
-
onJoined?: () => void;
|
|
682
|
-
}): ReactNode;
|
|
683
|
-
declare function MeetingRoom(props: {
|
|
491
|
+
interface MeetingSkinRootProps {
|
|
684
492
|
roomName: RoomName;
|
|
685
493
|
meetingId?: string;
|
|
686
494
|
slug?: string;
|
|
@@ -691,48 +499,29 @@ declare function MeetingRoom(props: {
|
|
|
691
499
|
* `meet_meeting_by_slug` is granted to `anon`; the `meet_meetings` TABLE is
|
|
692
500
|
* not, so the durable-feed backfill — a table read — is refused for a
|
|
693
501
|
* link-follower and `snapshot.meeting` stays null for them forever. A
|
|
694
|
-
* consumer that resolved the slug through the RPC
|
|
695
|
-
*
|
|
696
|
-
* the reader who has nothing else.
|
|
502
|
+
* consumer that resolved the slug through the RPC passes the row here, and
|
|
503
|
+
* the record renders for exactly the reader who has nothing else.
|
|
697
504
|
*/
|
|
698
505
|
meeting?: MeetingRecord;
|
|
699
506
|
onLeave?: () => void;
|
|
700
507
|
/**
|
|
701
|
-
* A HOST-PROVIDED control for the in-meeting header
|
|
702
|
-
* affordances that belong to the meeting (matrx-frontend puts its
|
|
508
|
+
* A HOST-PROVIDED control for the in-meeting header (matrx-frontend puts its
|
|
703
509
|
* Intelligence icon for the meeting's AI jobs here). Rendered in the header
|
|
704
|
-
* row of the live room only
|
|
705
|
-
* none. The package never inspects it, and styles nothing inside it.
|
|
510
|
+
* row of the live room only. The package never inspects it.
|
|
706
511
|
*/
|
|
707
512
|
headerControls?: ReactNode;
|
|
708
|
-
}
|
|
709
|
-
declare function
|
|
710
|
-
|
|
711
|
-
declare function CallButton({ person, mode, children, }: {
|
|
712
|
-
person: CallablePerson;
|
|
713
|
-
mode?: CallMode;
|
|
714
|
-
children?: ReactNode;
|
|
715
|
-
}): ReactNode;
|
|
513
|
+
}
|
|
514
|
+
declare function MeetingSkinRoot(props: MeetingSkinRootProps): ReactNode;
|
|
515
|
+
|
|
716
516
|
/**
|
|
717
|
-
*
|
|
718
|
-
*
|
|
517
|
+
* THE MEETING RECORD — a skin-EXTERNAL surface (CORE-DESIGN §5.3).
|
|
518
|
+
*
|
|
519
|
+
* What a meeting is once the room is gone: the record view, the recording
|
|
520
|
+
* player and the host's guest-access control. Outside the skin boundary — every
|
|
521
|
+
* skin links to the same record — so it lives in `@ai-matrx/meet/react`.
|
|
522
|
+
* It draws with the Meet skin's v0 primitives until the record gets its own
|
|
523
|
+
* look (S9 is the pixel pass).
|
|
719
524
|
*/
|
|
720
|
-
declare function IncomingCallHost(): ReactNode;
|
|
721
|
-
declare function IncomingCallCard({ invite }: {
|
|
722
|
-
invite: CallInvite;
|
|
723
|
-
}): ReactNode;
|
|
724
|
-
declare function ScheduleMeeting(props: {
|
|
725
|
-
/** Where meeting links point. `meetingLink` is the ONE link shape. */
|
|
726
|
-
appBaseUrl: string;
|
|
727
|
-
onScheduled?: (slug: string) => void;
|
|
728
|
-
}): ReactNode;
|
|
729
|
-
/** Reactions floating over the stage. Expired by the store, not by hope. */
|
|
730
|
-
declare function ReactionOverlay({ reactions, }: {
|
|
731
|
-
reactions: readonly {
|
|
732
|
-
id: string;
|
|
733
|
-
emoji: string;
|
|
734
|
-
}[];
|
|
735
|
-
}): ReactNode;
|
|
736
525
|
|
|
737
526
|
/**
|
|
738
527
|
* THE MEETING, AFTER THE MEETING (MRI-D2).
|
|
@@ -752,23 +541,6 @@ declare function ReactionOverlay({ reactions, }: {
|
|
|
752
541
|
* rows server-side. A part the reader is not allowed to see says so IN WORDS —
|
|
753
542
|
* an empty section is indistinguishable from a meeting where nothing happened.
|
|
754
543
|
*/
|
|
755
|
-
/**
|
|
756
|
-
* WHAT GUESTS MAY READ OF THIS MEETING — the host's control (MRF-1).
|
|
757
|
-
*
|
|
758
|
-
* 🚨 **HOST-ONLY, AND ABSENT FOR EVERYONE ELSE.** Not greyed out, not present
|
|
759
|
-
* with a tooltip: a participant has no control here at all, because a control
|
|
760
|
-
* that exists only to be refused is the dead-end class this package does not
|
|
761
|
-
* ship (D11-style honesty, same posture as `PersonHostActions`).
|
|
762
|
-
*
|
|
763
|
-
* It is the third rung of the ladder Arman ruled on 2026-09-12 — the system's
|
|
764
|
-
* default, the organization's setting, and this meeting's. "Use my
|
|
765
|
-
* organization's setting" is shown WITH what that resolves to, because a label
|
|
766
|
-
* that does not say what the organization chose makes the host guess about
|
|
767
|
-
* other people's words.
|
|
768
|
-
*/
|
|
769
|
-
declare function GuestRecordAccessControl({ meeting, }: {
|
|
770
|
-
meeting: MeetingRecord;
|
|
771
|
-
}): ReactNode;
|
|
772
544
|
declare function MeetingRecordView({ meeting, onRejoin, }: {
|
|
773
545
|
meeting: MeetingRecord;
|
|
774
546
|
/** Optional: a recurring link can be re-opened. Absent for a one-off. */
|
|
@@ -777,85 +549,11 @@ declare function MeetingRecordView({ meeting, onRejoin, }: {
|
|
|
777
549
|
declare function RecordingPlayer(props: {
|
|
778
550
|
fileId: string;
|
|
779
551
|
}): ReactNode;
|
|
780
|
-
/**
|
|
781
|
-
* THE MEETINGS LIST — live meetings AND the records of finished ones (MRI-D2).
|
|
782
|
-
*
|
|
783
|
-
* A finished meeting is not gone: it is the summary, the decisions, the action
|
|
784
|
-
* items and the transcript behind the same durable link (R3). A list that
|
|
785
|
-
* silently dropped ended meetings is what made every wrap-up unreachable from
|
|
786
|
-
* the product, so an ended row is a first-class row here and its action says
|
|
787
|
-
* what it opens.
|
|
788
|
-
*/
|
|
789
|
-
declare function MeetingList({ baseUrl }: {
|
|
790
|
-
baseUrl?: string;
|
|
791
|
-
}): ReactNode;
|
|
792
|
-
|
|
793
|
-
/**
|
|
794
|
-
* INLINED SVGs — no icon-library dependency, ever (C19).
|
|
795
|
-
*
|
|
796
|
-
* The tap-target precedent: ~60 buttons, all inlined, a fraction of a percent
|
|
797
|
-
* of bloat and zero version-skew risk. These are Lucide-shaped paths, adapted;
|
|
798
|
-
* they inherit `currentColor` so the token contract, not an icon prop, decides
|
|
799
|
-
* every color.
|
|
800
|
-
*/
|
|
801
552
|
|
|
802
|
-
type IconProps = SVGProps<SVGSVGElement>;
|
|
803
|
-
declare function MicIcon(props: IconProps): React.ReactElement;
|
|
804
|
-
declare function MicOffIcon(props: IconProps): React.ReactElement;
|
|
805
|
-
declare function CameraIcon(props: IconProps): React.ReactElement;
|
|
806
|
-
declare function CameraOffIcon(props: IconProps): React.ReactElement;
|
|
807
|
-
declare function ScreenShareIcon(props: IconProps): React.ReactElement;
|
|
808
|
-
declare function PhoneIcon(props: IconProps): React.ReactElement;
|
|
809
553
|
/**
|
|
810
|
-
*
|
|
811
|
-
*
|
|
812
|
-
|
|
813
|
-
declare function PhoneOffIcon(props: IconProps): React.ReactElement;
|
|
814
|
-
declare function HandIcon(props: IconProps): React.ReactElement;
|
|
815
|
-
declare function ChatIcon(props: IconProps): React.ReactElement;
|
|
816
|
-
declare function PeopleIcon(props: IconProps): React.ReactElement;
|
|
817
|
-
declare function RecordIcon(props: IconProps): React.ReactElement;
|
|
818
|
-
declare function SparklesIcon(props: IconProps): React.ReactElement;
|
|
819
|
-
declare function LockIcon(props: IconProps): React.ReactElement;
|
|
820
|
-
declare function LayoutIcon(props: IconProps): React.ReactElement;
|
|
821
|
-
declare function SettingsIcon(props: IconProps): React.ReactElement;
|
|
822
|
-
declare function CheckIcon(props: IconProps): React.ReactElement;
|
|
823
|
-
declare function CloseIcon(props: IconProps): React.ReactElement;
|
|
824
|
-
declare function PinIcon(props: IconProps): React.ReactElement;
|
|
825
|
-
declare function WifiLowIcon(props: IconProps): React.ReactElement;
|
|
826
|
-
declare function SmileIcon(props: IconProps): React.ReactElement;
|
|
827
|
-
declare function MoreIcon(props: IconProps): React.ReactElement;
|
|
828
|
-
declare function SearchIcon(props: IconProps): React.ReactElement;
|
|
829
|
-
declare function KeyboardIcon(props: IconProps): React.ReactElement;
|
|
830
|
-
declare function SpotlightIcon(props: IconProps): React.ReactElement;
|
|
831
|
-
declare function SignalIcon({ bars, ...props }: IconProps & {
|
|
832
|
-
bars: 0 | 1 | 2 | 3;
|
|
833
|
-
}): React.ReactElement;
|
|
834
|
-
declare function SpeakerIcon(props: IconProps): React.ReactElement;
|
|
835
|
-
declare function FlagIcon(props: IconProps): React.ReactElement;
|
|
836
|
-
declare function PencilIcon(props: IconProps): React.ReactElement;
|
|
837
|
-
/** Lucide `shapes` — the Activities menu (polls, Q&A, whiteboard, breakout rooms). */
|
|
838
|
-
declare function ActivitiesIcon(props: IconProps): React.ReactElement;
|
|
839
|
-
/** Lucide `chart-no-axes-column` — polls. */
|
|
840
|
-
declare function PollIcon(props: IconProps): React.ReactElement;
|
|
841
|
-
/** Lucide `message-circle-question` — Q&A. */
|
|
842
|
-
declare function QuestionIcon(props: IconProps): React.ReactElement;
|
|
843
|
-
/** Lucide `presentation` — the shared whiteboard. */
|
|
844
|
-
declare function WhiteboardIcon(props: IconProps): React.ReactElement;
|
|
845
|
-
/** Lucide `layout-panel-left`-like split — breakout rooms. */
|
|
846
|
-
declare function BreakoutIcon(props: IconProps): React.ReactElement;
|
|
847
|
-
|
|
848
|
-
/**
|
|
849
|
-
* POLLS, Q&A, THE SHARED WHITEBOARD AND BREAKOUT ROOMS — the in-room surfaces (Meet wave 5).
|
|
850
|
-
*
|
|
851
|
-
* Every act goes to the server (`host.inRoom.collab`), which decides who may do it and
|
|
852
|
-
* what each person sees; these components render what the store holds and say the
|
|
853
|
-
* server's sentence when it refuses. A control exists only when the organization's knob
|
|
854
|
-
* turns it on (`collab.settings`) — absent, never dead.
|
|
855
|
-
*
|
|
856
|
-
* The champions: Google Meet's Activities panel (one door to polls, Q&A, whiteboard and
|
|
857
|
-
* breakouts) and Zoom's breakout-room controls (automatic / manual / let people choose,
|
|
858
|
-
* timer, broadcast, move, bring everyone back).
|
|
554
|
+
* THE COLLAB AND CAPTION HOOKS — thin selectors over the core (CORE-DESIGN
|
|
555
|
+
* §5.3, step S1). The logic lives in `core/collab-state.ts`; these only bind it
|
|
556
|
+
* to the provider's store so every skin gets the same answers.
|
|
859
557
|
*/
|
|
860
558
|
|
|
861
559
|
interface UseCollabResult {
|
|
@@ -878,35 +576,8 @@ interface UseCollabResult {
|
|
|
878
576
|
declare function useCollab(): UseCollabResult;
|
|
879
577
|
/** The activities this person has, in the order Meet lists them. */
|
|
880
578
|
declare function useAvailableActivities(): CollabPanel[];
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
onOpen: (panel: CollabPanel) => void;
|
|
884
|
-
}): ReactNode;
|
|
885
|
-
declare function PollsPanel({ onClose }: {
|
|
886
|
-
onClose: () => void;
|
|
887
|
-
}): ReactNode;
|
|
888
|
-
declare function QaPanel({ onClose }: {
|
|
889
|
-
onClose: () => void;
|
|
890
|
-
}): ReactNode;
|
|
891
|
-
/**
|
|
892
|
-
* THE SHARED WHITEBOARD — one board per meeting, everyone draws, it is saved with the
|
|
893
|
-
* meeting (every stroke is a room item). Replaces the stage while open, the way Zoom's
|
|
894
|
-
* whiteboard does; the control bar stays.
|
|
895
|
-
*/
|
|
896
|
-
declare function WhiteboardPanel({ onClose }: {
|
|
897
|
-
onClose: () => void;
|
|
898
|
-
}): ReactNode;
|
|
899
|
-
declare function BreakoutsPanel({ onClose }: {
|
|
900
|
-
onClose: () => void;
|
|
901
|
-
}): ReactNode;
|
|
902
|
-
/**
|
|
903
|
-
* WHAT A PERSON IN A MEETING WITH BREAKOUTS SEES WITHOUT OPENING ANYTHING: the room they
|
|
904
|
-
* were assigned to (with Join), the room they are in and its countdown (with Return),
|
|
905
|
-
* a host's broadcast — and the moves: a host moving them, and everyone coming back.
|
|
906
|
-
* Also asks the server to close the plan when the countdown reaches zero (the server's
|
|
907
|
-
* clock decides; no schedule).
|
|
908
|
-
*/
|
|
909
|
-
declare function BreakoutBanner(): ReactNode;
|
|
579
|
+
/** Something worth a dot on the Activities button. */
|
|
580
|
+
declare function useActivityAttention(): boolean;
|
|
910
581
|
/**
|
|
911
582
|
* The viewer's caption-translation choice and the translator's work queue. Finished
|
|
912
583
|
* lines without a translation are sent in small batches; each line is translated once
|
|
@@ -921,9 +592,50 @@ declare function useCaptionTranslation(lines: readonly {
|
|
|
921
592
|
translations: Readonly<Record<string, string>>;
|
|
922
593
|
error: string | null;
|
|
923
594
|
};
|
|
924
|
-
/** The Settings panel's captions section: translate captions into a language, or not. */
|
|
925
|
-
declare function CaptionLanguageSettings(): ReactNode;
|
|
926
595
|
/** Which collab panel the bar should open, asked by something else (a poll launched). */
|
|
927
596
|
declare function useCollabPanelRequest(onRequest: (panel: CollabPanel) => void): void;
|
|
928
597
|
|
|
929
|
-
|
|
598
|
+
/**
|
|
599
|
+
* THE SKIN FACADE — the ONLY module a skin may import (CORE-DESIGN §5.1, §5.4;
|
|
600
|
+
* step S1). Guard: `scripts/check-skin-imports.mjs` (in `check:package` and
|
|
601
|
+
* `pnpm test`): a file under `src/skins/` may import React, the design system,
|
|
602
|
+
* files inside its own skin folder, and THIS module — nothing else.
|
|
603
|
+
*
|
|
604
|
+
* `useMeetCore()` is the facade over today's store: the runtime, the room
|
|
605
|
+
* snapshot, devices, the server's role and the observation-contract reading,
|
|
606
|
+
* as one object that changes only when one of them does. The re-exports below
|
|
607
|
+
* are the headless hooks, pure helpers and types Meet skin v0 (today's in-call
|
|
608
|
+
* UI, moved here unchanged) reads. Later steps (S6a+) replace the re-exports
|
|
609
|
+
* with the `CoreSnapshot` slices and typed actions; a skin then reads
|
|
610
|
+
* `useMeetCore()` alone.
|
|
611
|
+
*/
|
|
612
|
+
|
|
613
|
+
interface MeetCore {
|
|
614
|
+
/** The runtime, or null while auth/organization resolve (render nothing). */
|
|
615
|
+
readonly host: MeetHost | null;
|
|
616
|
+
readonly snapshot: MeetSnapshot | null;
|
|
617
|
+
readonly devices: DeviceSnapshot | null;
|
|
618
|
+
/** The server's word on this person's role (both carriers, MRI-A11). */
|
|
619
|
+
readonly role: ParticipantRole;
|
|
620
|
+
readonly isHost: boolean;
|
|
621
|
+
/** What the observation contract reads for this tab (S0). */
|
|
622
|
+
readonly observation: MeetObservation;
|
|
623
|
+
}
|
|
624
|
+
/** The one headless read a skin starts from. Stable until something moves. */
|
|
625
|
+
declare function useMeetCore(): MeetCore;
|
|
626
|
+
|
|
627
|
+
/**
|
|
628
|
+
* THE RINGING SURFACE — skin-EXTERNAL (CORE-DESIGN §5.3): an incoming call
|
|
629
|
+
* rings on whatever page the person is on, outside any meeting skin.
|
|
630
|
+
*/
|
|
631
|
+
|
|
632
|
+
/**
|
|
633
|
+
* Mount ONCE, high in the tree. Every incoming call rings here, on whatever
|
|
634
|
+
* surface the user is on (R2).
|
|
635
|
+
*/
|
|
636
|
+
declare function IncomingCallHost(): ReactNode;
|
|
637
|
+
declare function IncomingCallCard({ invite }: {
|
|
638
|
+
invite: CallInvite;
|
|
639
|
+
}): ReactNode;
|
|
640
|
+
|
|
641
|
+
export { AccessTokenSource, CallCenter, CallInvite, CallMode, CollabPanel, CollabRequest, CollabSnapshot, type CoreRootOptions, DeviceManager, DeviceSnapshot, GuestRecordAccessResolution, GuestRecordAccessSetting, InRoomClient, IncomingCallCard, IncomingCallHost, JoinRequest, LobbyEntry, LocalMediaState, MEET_SHORTCUTS, MediaEffects, MeetAi, MeetAnswerCoverage, MeetApi, type MeetCore, type MeetDiagnostic, type MeetHost, MeetIdentity, MeetObservation, MeetParticipant, MeetProvider, type MeetProviderProps, MeetRepository, MeetRoot, MeetSnapshot, MeetStore, MeetingId, MeetingNote, MeetingRecord, MeetingRecordBundle, MeetingRecordCache, MeetingRecordView, MeetingSession, MeetingSkinRoot, type MeetingSkinRootProps, ModerationNotice, ModerationRequest, ModerationResult, NoteTakerStatus, ObservedPhase, OrganizationId, ParticipantIdentity, ParticipantRole, RecordingController, RecordingPlayer, RoomDriverFactory, RoomEngine, RoomName, Stage, StageLayout, TokenClient, type TranscriptLine, TranscriptSource, type UseCallsResult, type UseCollabResult, type UseEndMeetingResult, type UseGuestRecordAccessResult, type UseHostControlsResult, type UseLobbyResult, type UseMediaEffectsResult, type UseMeetAiResult, type UseMeetingRecordResult, type UseMeetingsResult, type UseRecordingResult, type UseRoomResult, UserId, WrapUpAnnouncement, meetingRecordCache, useActivityAttention, useAudioLevel, useAvailableActivities, useCalls, useCanModerate, useCanRecord, useCaptionTranslation, useCollab, useCollabPanelRequest, useConsentNotice, useCoreObservation, useCoreRootProps, useDeviceSnapshot, useElapsed, useEndMeeting, useGuestRecordAccess, useHandQueue, useHostControls, useIsHost, useListenOnlyNotice, useLobby, useLocalMedia, useLocalUserId, useMediaEffects, useMeetAi, useMeetCore, useMeetHost, useMeetShortcuts, useMeetSnapshot, useMeeting, useMeetingId, useMeetingRecord, useMeetings, useModerationNotice, useReactions, useRecording, useRequiredMeetHost, useRole, useRoom, useStage, useTrack };
|