@ai-matrx/meet 0.7.73 → 0.7.75
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 +12 -0
- package/dist/index.cjs +11 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +11 -4
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +34 -8
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +34 -8
- package/dist/react.js.map +1 -1
- package/package.json +3 -3
package/dist/react.js
CHANGED
|
@@ -219,6 +219,12 @@ var MEET_ROUTES = {
|
|
|
219
219
|
record: "/api/v1/meet/record",
|
|
220
220
|
/** A host chooses what guests may read of ONE meeting (MRF-1). */
|
|
221
221
|
recordAccess: "/api/v1/meet/record/access",
|
|
222
|
+
/**
|
|
223
|
+
* KEEP YOUR NOTES (2026-10-01): a guest who just created an account presents
|
|
224
|
+
* their kept pass in `x-meet-room-token` with their new session, and the
|
|
225
|
+
* meeting they attended becomes theirs to read. Idempotent; never a grant.
|
|
226
|
+
*/
|
|
227
|
+
claim: "/api/v1/meet/claim",
|
|
222
228
|
/**
|
|
223
229
|
* Meet wave 1 (0.8): bring every invitee up to date after a write — sends the
|
|
224
230
|
* invitation / update / cancellation emails with their `.ics` and re-queues
|
|
@@ -5525,7 +5531,7 @@ import { formatDurationMs } from "@ai-matrx/kit/format";
|
|
|
5525
5531
|
function activeWrapUpSummary(notes) {
|
|
5526
5532
|
return notes.find((note) => note.role === "summary" && note.supersededBy === null) ?? null;
|
|
5527
5533
|
}
|
|
5528
|
-
var RESTRICTION_REMEDY = "
|
|
5534
|
+
var RESTRICTION_REMEDY = "Open it from the meeting link in the browser you attended with, or ask the host to share it.";
|
|
5529
5535
|
var PART_LABEL = {
|
|
5530
5536
|
transcript: "The transcript of this meeting is not readable from this account.",
|
|
5531
5537
|
notes: "The notes, decisions and action items are not readable from this account.",
|
|
@@ -5784,7 +5790,8 @@ function summarizeMeetingRecordRestrictions(restrictions) {
|
|
|
5784
5790
|
}
|
|
5785
5791
|
async function loadGuestMeetingRecord(args) {
|
|
5786
5792
|
const { api, repository, meetingId, meeting, roomToken } = args;
|
|
5787
|
-
|
|
5793
|
+
const session = args.session === true;
|
|
5794
|
+
if (roomToken === null && !session) {
|
|
5788
5795
|
return refusedBundle(
|
|
5789
5796
|
meeting,
|
|
5790
5797
|
"This meeting's record is only readable by the people who were in it.",
|
|
@@ -5797,9 +5804,9 @@ async function loadGuestMeetingRecord(args) {
|
|
|
5797
5804
|
path: `${MEET_ROUTES.record}?meeting_id=${encodeURIComponent(meetingId)}`,
|
|
5798
5805
|
method: "GET",
|
|
5799
5806
|
// A GUEST HAS NO SESSION AND IS STILL A FIRST-CLASS READER (D6).
|
|
5800
|
-
requireAuth:
|
|
5807
|
+
requireAuth: session,
|
|
5801
5808
|
operation: "meet.record",
|
|
5802
|
-
headers: { [ROOM_TOKEN_HEADER]: roomToken.token }
|
|
5809
|
+
headers: roomToken === null ? {} : { [ROOM_TOKEN_HEADER]: roomToken.token }
|
|
5803
5810
|
});
|
|
5804
5811
|
} catch (error) {
|
|
5805
5812
|
return refusedBundle(
|
|
@@ -6528,7 +6535,24 @@ function useMeetingRecord(meeting) {
|
|
|
6528
6535
|
meetingId,
|
|
6529
6536
|
meeting,
|
|
6530
6537
|
roomToken: tokens.remembered(roomName)
|
|
6531
|
-
}) : loadMeetingRecord(repository, meetingId, meeting, { userId: readerId })
|
|
6538
|
+
}) : loadMeetingRecord(repository, meetingId, meeting, { userId: readerId }).then(
|
|
6539
|
+
(direct) => (
|
|
6540
|
+
// A SIGNED-IN OUTSIDER IS NOT A STRANGER (2026-10-01). The database
|
|
6541
|
+
// answers members and invitees; a person from another organization
|
|
6542
|
+
// the host admitted — or a guest who later made an account — reads
|
|
6543
|
+
// the guest share through the server, with their session as the pass.
|
|
6544
|
+
api !== null && direct.restrictions.some((part) => part.part === "notes") ? loadGuestMeetingRecord({
|
|
6545
|
+
api,
|
|
6546
|
+
repository,
|
|
6547
|
+
meetingId,
|
|
6548
|
+
meeting,
|
|
6549
|
+
roomToken: null,
|
|
6550
|
+
session: true
|
|
6551
|
+
}).then(
|
|
6552
|
+
(viaServer) => viaServer.restrictions.length < direct.restrictions.length ? viaServer : direct
|
|
6553
|
+
) : direct
|
|
6554
|
+
)
|
|
6555
|
+
);
|
|
6532
6556
|
void load.then((bundle) => {
|
|
6533
6557
|
if (!live) return;
|
|
6534
6558
|
setRecordReaderId(readerId);
|
|
@@ -7948,6 +7972,7 @@ function WhiteboardPanel({ onClose }) {
|
|
|
7948
7972
|
function clock(ms2) {
|
|
7949
7973
|
return formatDurationMs3(Math.ceil(ms2 / 1e3) * 1e3, { style: "clock" });
|
|
7950
7974
|
}
|
|
7975
|
+
var BREAKOUT_EXPIRE_RETRY_MS = 5e3;
|
|
7951
7976
|
function useNow(active) {
|
|
7952
7977
|
const [now, setNow] = useState3(() => Date.now());
|
|
7953
7978
|
useEffect3(() => {
|
|
@@ -8208,10 +8233,11 @@ function BreakoutBanner() {
|
|
|
8208
8233
|
}, [moveAt, host, moveTo]);
|
|
8209
8234
|
useEffect3(() => {
|
|
8210
8235
|
if (open === null || remaining === null || remaining > 0) return;
|
|
8211
|
-
|
|
8212
|
-
|
|
8236
|
+
const asked = expireAsked.current;
|
|
8237
|
+
if (asked !== null && asked.id === open.id && now - asked.at < BREAKOUT_EXPIRE_RETRY_MS) return;
|
|
8238
|
+
expireAsked.current = { id: open.id, at: now };
|
|
8213
8239
|
void act({ action: "breakout_expire" });
|
|
8214
|
-
}, [open, remaining, act]);
|
|
8240
|
+
}, [open, remaining, act, now]);
|
|
8215
8241
|
const broadcast = collab?.broadcast ?? null;
|
|
8216
8242
|
const showBroadcast = broadcast !== null && broadcast.at !== dismissedBroadcast && open !== null;
|
|
8217
8243
|
const room = open?.rooms.find((r) => r.id === breakoutRoomId) ?? null;
|