@ai-matrx/meet 0.7.82 → 0.7.84
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 +20 -0
- package/dist/index.cjs +140 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +61 -1
- package/dist/index.d.ts +61 -1
- package/dist/index.js +140 -0
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +1229 -1024
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +34 -3
- package/dist/react.d.ts +34 -3
- package/dist/react.js +851 -646
- package/dist/react.js.map +1 -1
- package/package.json +15 -2
package/dist/index.d.cts
CHANGED
|
@@ -3717,4 +3717,64 @@ declare function createMeetingRecordCache(options?: {
|
|
|
3717
3717
|
graceMs?: number;
|
|
3718
3718
|
}): MeetingRecordCache;
|
|
3719
3719
|
|
|
3720
|
-
|
|
3720
|
+
/**
|
|
3721
|
+
* THE OBSERVATION CONTRACT, DERIVED FROM TODAY'S STORE (CORE-DESIGN §7 step S0).
|
|
3722
|
+
*
|
|
3723
|
+
* The real-browser scenario harness reads a meeting through a small set of
|
|
3724
|
+
* `data-meet-*` attributes (common-docs `meet/duplicates/HARNESS-CONTRACT.md`,
|
|
3725
|
+
* owned by the harness lane). This module turns the store's `MeetSnapshot`
|
|
3726
|
+
* into exactly those values — pure, framework-free, rendered ONCE by the
|
|
3727
|
+
* package (`useCoreRootProps()` / `<MeetRoot>`), never per skin.
|
|
3728
|
+
*
|
|
3729
|
+
* S0 rule: TODAY'S VALUES ONLY. Every value here is what the person actually
|
|
3730
|
+
* sees on today's screens, including today's defects — a `failed` or `left`
|
|
3731
|
+
* room renders the pre-join screen, so its phase is `prejoin`, and the harness
|
|
3732
|
+
* records that as the defect it is. A value the store does not know (host
|
|
3733
|
+
* presence before joining, autoplay blocking) is OMITTED rather than guessed:
|
|
3734
|
+
* an absent attribute reads as "unknown", a guessed one would lie.
|
|
3735
|
+
*/
|
|
3736
|
+
|
|
3737
|
+
/** `data-meet-phase` values this release renders (a subset of the contract's §2). */
|
|
3738
|
+
type ObservedPhase = "resolving" | `refused:${string}` | "prejoin" | "joining" | "waiting:knocking" | "in_call" | "disconnected" | "ended";
|
|
3739
|
+
type ObservedConnection = "stable" | "reconnecting" | "server_unreachable";
|
|
3740
|
+
interface MeetObservation {
|
|
3741
|
+
readonly phase: ObservedPhase;
|
|
3742
|
+
readonly reason: string | null;
|
|
3743
|
+
readonly role: ParticipantRole | "none";
|
|
3744
|
+
readonly connection: ObservedConnection;
|
|
3745
|
+
/** null = this tab does not know (it is not in the room). */
|
|
3746
|
+
readonly hostPresent: boolean | null;
|
|
3747
|
+
readonly lobbyCount: number;
|
|
3748
|
+
readonly recording: boolean;
|
|
3749
|
+
/** null = today's store does not track autoplay blocking. */
|
|
3750
|
+
readonly audioBlocked: boolean | null;
|
|
3751
|
+
/** null outside `joining` / `in_call` — no device is in play there today. */
|
|
3752
|
+
readonly camera: string | null;
|
|
3753
|
+
readonly microphone: string | null;
|
|
3754
|
+
}
|
|
3755
|
+
interface ObserveInput {
|
|
3756
|
+
readonly snapshot: MeetSnapshot | null;
|
|
3757
|
+
/** The row the consumer resolved, when the store has none yet (the guest lane). */
|
|
3758
|
+
readonly meeting?: MeetingRecord | null | undefined;
|
|
3759
|
+
}
|
|
3760
|
+
/** The store's device state → the contract's `camera` / `microphone` value. */
|
|
3761
|
+
declare function observedDevice(track: LocalTrackState): string;
|
|
3762
|
+
/**
|
|
3763
|
+
* The phase the person is looking at, by the same branches `<MeetingRoom>`
|
|
3764
|
+
* renders on: record → pre-join (idle/failed/left) → waiting room (lobby) →
|
|
3765
|
+
* the room (everything else).
|
|
3766
|
+
*/
|
|
3767
|
+
declare function observedPhase(input: ObserveInput): ObservedPhase;
|
|
3768
|
+
declare function observe(input: ObserveInput): MeetObservation;
|
|
3769
|
+
/** A phase the consumer renders itself (link resolution, the guest-name step, a dead link). */
|
|
3770
|
+
declare function staticObservation(phase: ObservedPhase, reason?: string | null): MeetObservation;
|
|
3771
|
+
/** The root element's attributes. Unknown values are omitted, never guessed. */
|
|
3772
|
+
declare function rootAttributes(o: MeetObservation): Record<string, string>;
|
|
3773
|
+
/** The contract's per-person connection vocabulary. `unknown` is not a reading. */
|
|
3774
|
+
declare function observedQuality(quality: ConnectionQuality): string | null;
|
|
3775
|
+
/** `[data-meet-participant]` attributes for one person's tile or roster row. */
|
|
3776
|
+
declare function participantAttributes(p: MeetParticipant): Record<string, string>;
|
|
3777
|
+
/** The listen-only notice's contract code, from why the microphone is off. */
|
|
3778
|
+
declare function microphoneNoticeCode(track: LocalTrackState): "mic-blocked" | "device-lost" | null;
|
|
3779
|
+
|
|
3780
|
+
export { ATTENDANCE_CSV_HEADER, type AccessTokenSource, type AdmissionState, type AnnounceResult, type ApplyRoomEventArgs, type AskArgs, type AttendanceKind, type AttendanceRow, type AudioProcessing, CALL_INVITE_KIND, CALL_INVITE_VERSION, CAPTION_LANGUAGES, CONSENT_NOTICE_ATTRIBUTE, type CallCenter, type CallCenterOptions, type CallId, type CallInvite, type CallInviteHandlerOptions, type CallInvitePayload, type CallMode, type CallState, type CallablePerson, type CollabAction, type CollabPanel, type CollabRequest, type CollabResult, type CollabSnapshot, type 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, EMPTY_COLLAB, END_MEETING_NOT_SERVED, type EffectsStorage, type EndMeetingResult, FILE_SESSION_PATH, 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, type InviteeInput, type InviteeRole, type JoinRequest, type JsonObject, type JsonValue, LISTEN_ONLY_NOTICE, type LibraryRecording, type LiveKitDriverOptions, type 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_ROUTES, MEET_SCHEMA, MODERATION_ACTIONS, type MediaDevicesLike, type MediaEffects, type MediaUnavailable, type MeetAi, type MeetAiAnswer, type MeetAiOptions, type MeetAnswerCoverage, type MeetApi, type MeetApiOptions, type MeetApiRequest, type MeetBreakoutBroadcast, type MeetBreakoutPlan, type MeetBreakoutRoom, type MeetCollabSettings, type MeetDevice, MeetError, type MeetErrorCode, type MeetEvent, type MeetFileMedia, type MeetGrants, type MeetIdentity, type MeetObservation, type MeetParticipant, type MeetPoll, type MeetPollOption, type MeetPollState, type MeetQuestion, type MeetQuestionState, type MeetRepository, type MeetRoomDriver, type MeetSnapshot, type MeetStore, type MeetStroke, type MeetingActivities, type MeetingAttendee, type MeetingChanges, type MeetingChatHistory, type MeetingId, type MeetingInviteHandlerOptions, type MeetingInvitePayload, type MeetingInvitee, type MeetingKind, type MeetingNote, type MeetingNoteKind, type MeetingOccurrence, type 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, type 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, type NoteTakerState, type NoteTakerStatus, ORGANIZATION_HEADER, type ObserveInput, type ObservedConnection, type ObservedPhase, type OccurrenceOverride, type OccurrenceState, type OrganizationId, PARTICIPANT_CAN_RECORD_ATTRIBUTE, PARTICIPANT_ROLE_ATTRIBUTE, type ParticipantIdentity, type ParticipantRole, REACTION_TTL_MS, REFUSED_ABSENCE, ROLE_RANK, ROOM_EVENTS, ROOM_EVENT_PREFIX, ROOM_TOKEN_HEADER, RPCS, type RecordingController, type RecordingControllerOptions, type RecordingPolicy, type RecordingRecord, type RecordingState, type RepositoryOptions, type RoomChatMessage, type RoomDriverFactory, type RoomDriverHandlers, type RoomEngine, type RoomEngineOptions, type RoomEventOutcome, type RoomEventTopic, type RoomName, type RoomPhase, type RoomReaction, type RoomToken, type RoomTokenStorage, type RsvpAnswer, type RsvpInvitation, type RsvpState, type ScheduleMeetingInput, type Stage, type StageArgs, type StageLayout, TABLES, TRANSCRIPTION_ATTRIBUTES, TRANSCRIPTION_TOPIC, type TokenClient, type TokenClientOptions, type TokenRequest, type TranscriptBlock, type TranscriptFormat, type TranscriptMatch, type TranscriptSegment, type TranscriptSource, type UpcomingOccurrence, type UserId, type VideoEffect, type WrapUpAnnouncement, type WrapUpStatus, absenceSentence, activeWrapUpSummary, announceMeeting, applyCollabPacket, applyRoomEvent, asCallId, asMeetingId, asOrganizationId, asParticipantIdentity, asRoomName, asUserId, assembleMeetingRecord, assignedRoom, attendanceCsv, attendanceReport, attendanceTotals, attendeeKey, autoAssign, breakoutRemainingMs, callInviteAction, callInviteText, callStateLabel, canModerate, canModerateParticipant, canTransition, captionSegment, changesPatch, clockPosition, collabFromState, computeStage, countLabel, createCallCenter, createCallInviteHandler, createDeviceManager, createInRoomClient, createLiveKitDriver, createMeetAi, createMeetApi, createMeetRepository, createMeetStore, createMeetingInviteHandler, createMeetingRecordCache, createMeetingSession, createMemoryDeviceStorage, createRecordingController, createRoomEngine, createTokenClient, createWebDeviceStorage, createWebEffectsStorage, createWebRoomTokenStorage, defaultCaptionLanguage, displayNameFor, fileDownloadPath, gridColumns, groupTranscript, guestRecordAccessExplanation, guestRecordAccessLabel, guestRecordAccessSetting, hasEnded, hostUserIds, invalidResponse, isGuest, isGuestIdentity, isHostRole, isListenOnly, isNoteTaker, isRealName, isRoomEventTopic, learnName, learnNames, listenOnlyNotice, loadFollowUpDraft, loadGuestMeetingRecord, loadMeetingActivities, loadMeetingChat, loadMeetingRecord, loadMeetingRecordParts, mapConnectionState, mapQuality, meetingInviteAction, meetingLength, meetingLink, meetingPath, meetingSlug, meetingTopic, meetingWhen, mergeCaption, mergeRecord, microphoneNoticeCode, normalizeDeviceError, normalizeMeetError, normalizeSpoken, noteTakerIdentity, noteTakerLabel, noteTakerParticipant, noteTakerStatus, notesDocument, observe as observeMeeting, observedDevice, observedPhase, observedQuality, orderParticipants, parseRoomToken, participantAttributes, participantSummary, playableRecordingFileId, projectInvitee, projectLibraryRecording, projectNote, projectOccurrence, projectOverride, projectParticipant, projectRsvpInvitation, projectSearchHit, projectSegment, projectUpcoming, pushMeetingToGoogleCalendar, readServerRefusal, readableTranscript, recordingLabel, recordingNotice, recordingOffsetMs, roleOf, roomTopic, rootAttributes, searchTranscript, sendFollowUp, setGuestRecordAccess, settingsPatch, snapshotParticipant, snippetRuns, staticObservation, summarizeMeetingRecordRestrictions, transcriptDocument, unavailableFrom, uniqueAttendees, userTopic, wasRefused, withItem, wrapUpStatus };
|
package/dist/index.d.ts
CHANGED
|
@@ -3717,4 +3717,64 @@ declare function createMeetingRecordCache(options?: {
|
|
|
3717
3717
|
graceMs?: number;
|
|
3718
3718
|
}): MeetingRecordCache;
|
|
3719
3719
|
|
|
3720
|
-
|
|
3720
|
+
/**
|
|
3721
|
+
* THE OBSERVATION CONTRACT, DERIVED FROM TODAY'S STORE (CORE-DESIGN §7 step S0).
|
|
3722
|
+
*
|
|
3723
|
+
* The real-browser scenario harness reads a meeting through a small set of
|
|
3724
|
+
* `data-meet-*` attributes (common-docs `meet/duplicates/HARNESS-CONTRACT.md`,
|
|
3725
|
+
* owned by the harness lane). This module turns the store's `MeetSnapshot`
|
|
3726
|
+
* into exactly those values — pure, framework-free, rendered ONCE by the
|
|
3727
|
+
* package (`useCoreRootProps()` / `<MeetRoot>`), never per skin.
|
|
3728
|
+
*
|
|
3729
|
+
* S0 rule: TODAY'S VALUES ONLY. Every value here is what the person actually
|
|
3730
|
+
* sees on today's screens, including today's defects — a `failed` or `left`
|
|
3731
|
+
* room renders the pre-join screen, so its phase is `prejoin`, and the harness
|
|
3732
|
+
* records that as the defect it is. A value the store does not know (host
|
|
3733
|
+
* presence before joining, autoplay blocking) is OMITTED rather than guessed:
|
|
3734
|
+
* an absent attribute reads as "unknown", a guessed one would lie.
|
|
3735
|
+
*/
|
|
3736
|
+
|
|
3737
|
+
/** `data-meet-phase` values this release renders (a subset of the contract's §2). */
|
|
3738
|
+
type ObservedPhase = "resolving" | `refused:${string}` | "prejoin" | "joining" | "waiting:knocking" | "in_call" | "disconnected" | "ended";
|
|
3739
|
+
type ObservedConnection = "stable" | "reconnecting" | "server_unreachable";
|
|
3740
|
+
interface MeetObservation {
|
|
3741
|
+
readonly phase: ObservedPhase;
|
|
3742
|
+
readonly reason: string | null;
|
|
3743
|
+
readonly role: ParticipantRole | "none";
|
|
3744
|
+
readonly connection: ObservedConnection;
|
|
3745
|
+
/** null = this tab does not know (it is not in the room). */
|
|
3746
|
+
readonly hostPresent: boolean | null;
|
|
3747
|
+
readonly lobbyCount: number;
|
|
3748
|
+
readonly recording: boolean;
|
|
3749
|
+
/** null = today's store does not track autoplay blocking. */
|
|
3750
|
+
readonly audioBlocked: boolean | null;
|
|
3751
|
+
/** null outside `joining` / `in_call` — no device is in play there today. */
|
|
3752
|
+
readonly camera: string | null;
|
|
3753
|
+
readonly microphone: string | null;
|
|
3754
|
+
}
|
|
3755
|
+
interface ObserveInput {
|
|
3756
|
+
readonly snapshot: MeetSnapshot | null;
|
|
3757
|
+
/** The row the consumer resolved, when the store has none yet (the guest lane). */
|
|
3758
|
+
readonly meeting?: MeetingRecord | null | undefined;
|
|
3759
|
+
}
|
|
3760
|
+
/** The store's device state → the contract's `camera` / `microphone` value. */
|
|
3761
|
+
declare function observedDevice(track: LocalTrackState): string;
|
|
3762
|
+
/**
|
|
3763
|
+
* The phase the person is looking at, by the same branches `<MeetingRoom>`
|
|
3764
|
+
* renders on: record → pre-join (idle/failed/left) → waiting room (lobby) →
|
|
3765
|
+
* the room (everything else).
|
|
3766
|
+
*/
|
|
3767
|
+
declare function observedPhase(input: ObserveInput): ObservedPhase;
|
|
3768
|
+
declare function observe(input: ObserveInput): MeetObservation;
|
|
3769
|
+
/** A phase the consumer renders itself (link resolution, the guest-name step, a dead link). */
|
|
3770
|
+
declare function staticObservation(phase: ObservedPhase, reason?: string | null): MeetObservation;
|
|
3771
|
+
/** The root element's attributes. Unknown values are omitted, never guessed. */
|
|
3772
|
+
declare function rootAttributes(o: MeetObservation): Record<string, string>;
|
|
3773
|
+
/** The contract's per-person connection vocabulary. `unknown` is not a reading. */
|
|
3774
|
+
declare function observedQuality(quality: ConnectionQuality): string | null;
|
|
3775
|
+
/** `[data-meet-participant]` attributes for one person's tile or roster row. */
|
|
3776
|
+
declare function participantAttributes(p: MeetParticipant): Record<string, string>;
|
|
3777
|
+
/** The listen-only notice's contract code, from why the microphone is off. */
|
|
3778
|
+
declare function microphoneNoticeCode(track: LocalTrackState): "mic-blocked" | "device-lost" | null;
|
|
3779
|
+
|
|
3780
|
+
export { ATTENDANCE_CSV_HEADER, type AccessTokenSource, type AdmissionState, type AnnounceResult, type ApplyRoomEventArgs, type AskArgs, type AttendanceKind, type AttendanceRow, type AudioProcessing, CALL_INVITE_KIND, CALL_INVITE_VERSION, CAPTION_LANGUAGES, CONSENT_NOTICE_ATTRIBUTE, type CallCenter, type CallCenterOptions, type CallId, type CallInvite, type CallInviteHandlerOptions, type CallInvitePayload, type CallMode, type CallState, type CallablePerson, type CollabAction, type CollabPanel, type CollabRequest, type CollabResult, type CollabSnapshot, type 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, EMPTY_COLLAB, END_MEETING_NOT_SERVED, type EffectsStorage, type EndMeetingResult, FILE_SESSION_PATH, 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, type InviteeInput, type InviteeRole, type JoinRequest, type JsonObject, type JsonValue, LISTEN_ONLY_NOTICE, type LibraryRecording, type LiveKitDriverOptions, type 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_ROUTES, MEET_SCHEMA, MODERATION_ACTIONS, type MediaDevicesLike, type MediaEffects, type MediaUnavailable, type MeetAi, type MeetAiAnswer, type MeetAiOptions, type MeetAnswerCoverage, type MeetApi, type MeetApiOptions, type MeetApiRequest, type MeetBreakoutBroadcast, type MeetBreakoutPlan, type MeetBreakoutRoom, type MeetCollabSettings, type MeetDevice, MeetError, type MeetErrorCode, type MeetEvent, type MeetFileMedia, type MeetGrants, type MeetIdentity, type MeetObservation, type MeetParticipant, type MeetPoll, type MeetPollOption, type MeetPollState, type MeetQuestion, type MeetQuestionState, type MeetRepository, type MeetRoomDriver, type MeetSnapshot, type MeetStore, type MeetStroke, type MeetingActivities, type MeetingAttendee, type MeetingChanges, type MeetingChatHistory, type MeetingId, type MeetingInviteHandlerOptions, type MeetingInvitePayload, type MeetingInvitee, type MeetingKind, type MeetingNote, type MeetingNoteKind, type MeetingOccurrence, type 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, type 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, type NoteTakerState, type NoteTakerStatus, ORGANIZATION_HEADER, type ObserveInput, type ObservedConnection, type ObservedPhase, type OccurrenceOverride, type OccurrenceState, type OrganizationId, PARTICIPANT_CAN_RECORD_ATTRIBUTE, PARTICIPANT_ROLE_ATTRIBUTE, type ParticipantIdentity, type ParticipantRole, REACTION_TTL_MS, REFUSED_ABSENCE, ROLE_RANK, ROOM_EVENTS, ROOM_EVENT_PREFIX, ROOM_TOKEN_HEADER, RPCS, type RecordingController, type RecordingControllerOptions, type RecordingPolicy, type RecordingRecord, type RecordingState, type RepositoryOptions, type RoomChatMessage, type RoomDriverFactory, type RoomDriverHandlers, type RoomEngine, type RoomEngineOptions, type RoomEventOutcome, type RoomEventTopic, type RoomName, type RoomPhase, type RoomReaction, type RoomToken, type RoomTokenStorage, type RsvpAnswer, type RsvpInvitation, type RsvpState, type ScheduleMeetingInput, type Stage, type StageArgs, type StageLayout, TABLES, TRANSCRIPTION_ATTRIBUTES, TRANSCRIPTION_TOPIC, type TokenClient, type TokenClientOptions, type TokenRequest, type TranscriptBlock, type TranscriptFormat, type TranscriptMatch, type TranscriptSegment, type TranscriptSource, type UpcomingOccurrence, type UserId, type VideoEffect, type WrapUpAnnouncement, type WrapUpStatus, absenceSentence, activeWrapUpSummary, announceMeeting, applyCollabPacket, applyRoomEvent, asCallId, asMeetingId, asOrganizationId, asParticipantIdentity, asRoomName, asUserId, assembleMeetingRecord, assignedRoom, attendanceCsv, attendanceReport, attendanceTotals, attendeeKey, autoAssign, breakoutRemainingMs, callInviteAction, callInviteText, callStateLabel, canModerate, canModerateParticipant, canTransition, captionSegment, changesPatch, clockPosition, collabFromState, computeStage, countLabel, createCallCenter, createCallInviteHandler, createDeviceManager, createInRoomClient, createLiveKitDriver, createMeetAi, createMeetApi, createMeetRepository, createMeetStore, createMeetingInviteHandler, createMeetingRecordCache, createMeetingSession, createMemoryDeviceStorage, createRecordingController, createRoomEngine, createTokenClient, createWebDeviceStorage, createWebEffectsStorage, createWebRoomTokenStorage, defaultCaptionLanguage, displayNameFor, fileDownloadPath, gridColumns, groupTranscript, guestRecordAccessExplanation, guestRecordAccessLabel, guestRecordAccessSetting, hasEnded, hostUserIds, invalidResponse, isGuest, isGuestIdentity, isHostRole, isListenOnly, isNoteTaker, isRealName, isRoomEventTopic, learnName, learnNames, listenOnlyNotice, loadFollowUpDraft, loadGuestMeetingRecord, loadMeetingActivities, loadMeetingChat, loadMeetingRecord, loadMeetingRecordParts, mapConnectionState, mapQuality, meetingInviteAction, meetingLength, meetingLink, meetingPath, meetingSlug, meetingTopic, meetingWhen, mergeCaption, mergeRecord, microphoneNoticeCode, normalizeDeviceError, normalizeMeetError, normalizeSpoken, noteTakerIdentity, noteTakerLabel, noteTakerParticipant, noteTakerStatus, notesDocument, observe as observeMeeting, observedDevice, observedPhase, observedQuality, orderParticipants, parseRoomToken, participantAttributes, participantSummary, playableRecordingFileId, projectInvitee, projectLibraryRecording, projectNote, projectOccurrence, projectOverride, projectParticipant, projectRsvpInvitation, projectSearchHit, projectSegment, projectUpcoming, pushMeetingToGoogleCalendar, readServerRefusal, readableTranscript, recordingLabel, recordingNotice, recordingOffsetMs, roleOf, roomTopic, rootAttributes, searchTranscript, sendFollowUp, setGuestRecordAccess, settingsPatch, snapshotParticipant, snippetRuns, staticObservation, summarizeMeetingRecordRestrictions, transcriptDocument, unavailableFrom, uniqueAttendees, userTopic, wasRefused, withItem, wrapUpStatus };
|
package/dist/index.js
CHANGED
|
@@ -6304,6 +6304,138 @@ function createMeetingRecordCache(options = {}) {
|
|
|
6304
6304
|
}
|
|
6305
6305
|
};
|
|
6306
6306
|
}
|
|
6307
|
+
|
|
6308
|
+
// src/core/observation.ts
|
|
6309
|
+
function observedDevice(track) {
|
|
6310
|
+
if (track.enabled) return "on";
|
|
6311
|
+
const refused = track.unavailable;
|
|
6312
|
+
if (refused === null) return "muted_by_me";
|
|
6313
|
+
switch (refused.code) {
|
|
6314
|
+
case "permission-denied":
|
|
6315
|
+
return "unavailable:denied";
|
|
6316
|
+
case "device-not-found":
|
|
6317
|
+
return "unavailable:none";
|
|
6318
|
+
case "device-in-use":
|
|
6319
|
+
return "unavailable:busy";
|
|
6320
|
+
case "insecure-context":
|
|
6321
|
+
return "unavailable:blocked_site";
|
|
6322
|
+
default:
|
|
6323
|
+
return "unavailable:failed";
|
|
6324
|
+
}
|
|
6325
|
+
}
|
|
6326
|
+
function endedRecord(snapshot, given) {
|
|
6327
|
+
const record = snapshot?.meeting ?? given;
|
|
6328
|
+
return record !== null && record.endedAt !== null;
|
|
6329
|
+
}
|
|
6330
|
+
function observedPhase(input) {
|
|
6331
|
+
const { snapshot } = input;
|
|
6332
|
+
if (snapshot === null) return "resolving";
|
|
6333
|
+
const raw = snapshot.phase;
|
|
6334
|
+
const live = raw === "connected" || raw === "reconnecting";
|
|
6335
|
+
if (endedRecord(snapshot, input.meeting ?? null) && !live) return "ended";
|
|
6336
|
+
switch (raw) {
|
|
6337
|
+
case "idle":
|
|
6338
|
+
case "failed":
|
|
6339
|
+
case "left":
|
|
6340
|
+
return "prejoin";
|
|
6341
|
+
case "lobby":
|
|
6342
|
+
return "waiting:knocking";
|
|
6343
|
+
case "requesting-token":
|
|
6344
|
+
case "connecting":
|
|
6345
|
+
return "joining";
|
|
6346
|
+
case "connected":
|
|
6347
|
+
case "reconnecting":
|
|
6348
|
+
return "in_call";
|
|
6349
|
+
}
|
|
6350
|
+
}
|
|
6351
|
+
var ADMITTER_ROLES = /* @__PURE__ */ new Set(["host", "cohost"]);
|
|
6352
|
+
function observe(input) {
|
|
6353
|
+
const { snapshot } = input;
|
|
6354
|
+
const phase = observedPhase(input);
|
|
6355
|
+
const inCall = phase === "in_call";
|
|
6356
|
+
const role = inCall && snapshot !== null ? effectiveRole(snapshot) : "none";
|
|
6357
|
+
const canAdmit = role !== "none" && ADMITTER_ROLES.has(role);
|
|
6358
|
+
const deviceInPlay = phase === "joining" || inCall;
|
|
6359
|
+
return {
|
|
6360
|
+
phase,
|
|
6361
|
+
reason: null,
|
|
6362
|
+
role,
|
|
6363
|
+
connection: snapshot?.phase === "reconnecting" ? "reconnecting" : "stable",
|
|
6364
|
+
hostPresent: inCall && snapshot !== null ? snapshot.participants.some((p) => ADMITTER_ROLES.has(p.role)) : null,
|
|
6365
|
+
lobbyCount: canAdmit && snapshot !== null ? snapshot.lobby.filter((entry) => entry.state === "knocking").length : 0,
|
|
6366
|
+
recording: snapshot?.recording === "recording" || snapshot?.recording === "stopping",
|
|
6367
|
+
audioBlocked: null,
|
|
6368
|
+
camera: deviceInPlay && snapshot !== null ? observedDevice(snapshot.media.camera) : null,
|
|
6369
|
+
microphone: deviceInPlay && snapshot !== null ? observedDevice(snapshot.media.microphone) : null
|
|
6370
|
+
};
|
|
6371
|
+
}
|
|
6372
|
+
function staticObservation(phase, reason = null) {
|
|
6373
|
+
return {
|
|
6374
|
+
phase,
|
|
6375
|
+
reason,
|
|
6376
|
+
role: "none",
|
|
6377
|
+
connection: phase === "disconnected" ? "server_unreachable" : "stable",
|
|
6378
|
+
hostPresent: null,
|
|
6379
|
+
lobbyCount: 0,
|
|
6380
|
+
recording: false,
|
|
6381
|
+
audioBlocked: null,
|
|
6382
|
+
camera: null,
|
|
6383
|
+
microphone: null
|
|
6384
|
+
};
|
|
6385
|
+
}
|
|
6386
|
+
function rootAttributes(o) {
|
|
6387
|
+
const attrs = {
|
|
6388
|
+
"data-meet-root": "",
|
|
6389
|
+
"data-meet-phase": o.phase,
|
|
6390
|
+
"data-meet-role": o.role,
|
|
6391
|
+
"data-meet-connection": o.connection,
|
|
6392
|
+
"data-meet-lobby-count": String(o.lobbyCount),
|
|
6393
|
+
"data-meet-recording": String(o.recording)
|
|
6394
|
+
};
|
|
6395
|
+
if (o.reason !== null) attrs["data-meet-reason"] = o.reason;
|
|
6396
|
+
if (o.hostPresent !== null) attrs["data-meet-host-present"] = String(o.hostPresent);
|
|
6397
|
+
if (o.audioBlocked !== null) attrs["data-meet-audio-blocked"] = String(o.audioBlocked);
|
|
6398
|
+
if (o.camera !== null) attrs["data-meet-camera"] = o.camera;
|
|
6399
|
+
if (o.microphone !== null) attrs["data-meet-microphone"] = o.microphone;
|
|
6400
|
+
attrs["data-meet-regions"] = JSON.stringify({
|
|
6401
|
+
connection: o.connection,
|
|
6402
|
+
camera: o.camera,
|
|
6403
|
+
mic: o.microphone,
|
|
6404
|
+
audio_output: o.audioBlocked === null ? null : o.audioBlocked ? "blocked" : "playing",
|
|
6405
|
+
recording: o.recording
|
|
6406
|
+
});
|
|
6407
|
+
return attrs;
|
|
6408
|
+
}
|
|
6409
|
+
function observedQuality(quality) {
|
|
6410
|
+
switch (quality) {
|
|
6411
|
+
case "excellent":
|
|
6412
|
+
case "good":
|
|
6413
|
+
return "good";
|
|
6414
|
+
case "poor":
|
|
6415
|
+
return "poor";
|
|
6416
|
+
case "lost":
|
|
6417
|
+
return "lost";
|
|
6418
|
+
default:
|
|
6419
|
+
return null;
|
|
6420
|
+
}
|
|
6421
|
+
}
|
|
6422
|
+
function participantAttributes(p) {
|
|
6423
|
+
const attrs = {
|
|
6424
|
+
"data-meet-participant": "",
|
|
6425
|
+
"data-meet-participant-identity": p.identity,
|
|
6426
|
+
"data-meet-participant-name": p.displayName,
|
|
6427
|
+
"data-meet-participant-role": p.role,
|
|
6428
|
+
"data-meet-participant-self": String(p.isLocal)
|
|
6429
|
+
};
|
|
6430
|
+
const quality = observedQuality(p.quality);
|
|
6431
|
+
if (quality !== null) attrs["data-meet-participant-connection"] = quality;
|
|
6432
|
+
return attrs;
|
|
6433
|
+
}
|
|
6434
|
+
function microphoneNoticeCode(track) {
|
|
6435
|
+
const refused = track.unavailable;
|
|
6436
|
+
if (refused === null) return null;
|
|
6437
|
+
return refused.code === "permission-denied" || refused.code === "insecure-context" ? "mic-blocked" : "device-lost";
|
|
6438
|
+
}
|
|
6307
6439
|
export {
|
|
6308
6440
|
ATTENDANCE_CSV_HEADER,
|
|
6309
6441
|
CALL_INVITE_KIND,
|
|
@@ -6437,6 +6569,7 @@ export {
|
|
|
6437
6569
|
meetingWhen,
|
|
6438
6570
|
mergeCaption,
|
|
6439
6571
|
mergeRecord,
|
|
6572
|
+
microphoneNoticeCode,
|
|
6440
6573
|
normalizeDeviceError,
|
|
6441
6574
|
normalizeMeetError,
|
|
6442
6575
|
normalizeSpoken,
|
|
@@ -6445,8 +6578,13 @@ export {
|
|
|
6445
6578
|
noteTakerParticipant,
|
|
6446
6579
|
noteTakerStatus,
|
|
6447
6580
|
notesDocument,
|
|
6581
|
+
observe as observeMeeting,
|
|
6582
|
+
observedDevice,
|
|
6583
|
+
observedPhase,
|
|
6584
|
+
observedQuality,
|
|
6448
6585
|
orderParticipants,
|
|
6449
6586
|
parseRoomToken,
|
|
6587
|
+
participantAttributes,
|
|
6450
6588
|
participantSummary,
|
|
6451
6589
|
playableRecordingFileId,
|
|
6452
6590
|
projectInvitee,
|
|
@@ -6467,12 +6605,14 @@ export {
|
|
|
6467
6605
|
recordingOffsetMs,
|
|
6468
6606
|
roleOf,
|
|
6469
6607
|
roomTopic,
|
|
6608
|
+
rootAttributes,
|
|
6470
6609
|
searchTranscript,
|
|
6471
6610
|
sendFollowUp,
|
|
6472
6611
|
setGuestRecordAccess,
|
|
6473
6612
|
settingsPatch,
|
|
6474
6613
|
snapshotParticipant,
|
|
6475
6614
|
snippetRuns,
|
|
6615
|
+
staticObservation,
|
|
6476
6616
|
summarizeMeetingRecordRestrictions,
|
|
6477
6617
|
transcriptDocument,
|
|
6478
6618
|
unavailableFrom,
|