@indigoai-us/hq-cli 5.345.51 → 5.345.53
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 +6 -0
- package/dist/commands/meetings.js +36 -1
- package/dist/hq-cloud-sync-runner/bin/sync-runner.js +40293 -13770
- package/dist/hq-cloud-sync-runner/package.json +1 -1
- package/dist/lib/flag-registry-worker-source.generated.d.ts +1 -1
- package/dist/lib/flag-registry-worker-source.generated.js +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [5.345.53] — 2026-10-08
|
|
6
|
+
- `hq meetings live` now also lists live meetings you were invited to but did not record, such as a standup a teammate's notetaker is recording, so you can read their live transcript.
|
|
7
|
+
|
|
8
|
+
## [5.345.52] — 2026-10-08
|
|
9
|
+
- Improves recovery from disk-full sync failures by using the updated hq-cloud rescue staging flow.
|
|
10
|
+
|
|
5
11
|
## [5.345.51] — 2026-10-08
|
|
6
12
|
|
|
7
13
|
- Multi-company session locking now defaults on across native CLI readers; an explicit false flag value remains the kill switch.
|
|
@@ -107,6 +107,40 @@ function liveBotTime(bot) {
|
|
|
107
107
|
.filter(Number.isFinite);
|
|
108
108
|
return times.length > 0 ? Math.max(...times) : Number.NEGATIVE_INFINITY;
|
|
109
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Live meetings in this company the caller may read but did not record.
|
|
112
|
+
*
|
|
113
|
+
* `/v1/bot/list` returns only the caller's own notetakers, so a meeting a
|
|
114
|
+
* coworker recorded never appears there. The meetings API lists the live
|
|
115
|
+
* meetings the caller is an attendee of. An older server ignores `view=live`
|
|
116
|
+
* and answers with the ordinary meeting list, which has no `bots`, and any
|
|
117
|
+
* failure here leaves the caller's own list unchanged.
|
|
118
|
+
*/
|
|
119
|
+
async function fetchAttendedLiveBots(token, companyId) {
|
|
120
|
+
try {
|
|
121
|
+
const res = await vaultApiFetch({ token, path: "/v1/meetings", query: { companyId, view: "live" } });
|
|
122
|
+
if (!res.ok)
|
|
123
|
+
return [];
|
|
124
|
+
const data = (await res.json());
|
|
125
|
+
return Array.isArray(data.bots) ? data.bots : [];
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
return [];
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/** The caller's own bots first; attended meetings they did not record added after. */
|
|
132
|
+
function mergeLiveMeetingBots(own, attended) {
|
|
133
|
+
const seen = new Set(own.map(liveBotId).filter((id) => Boolean(id)));
|
|
134
|
+
const merged = [...own];
|
|
135
|
+
for (const bot of attended) {
|
|
136
|
+
const id = liveBotId(bot);
|
|
137
|
+
if (!id || seen.has(id))
|
|
138
|
+
continue;
|
|
139
|
+
seen.add(id);
|
|
140
|
+
merged.push(bot);
|
|
141
|
+
}
|
|
142
|
+
return merged;
|
|
143
|
+
}
|
|
110
144
|
/** Select bots intended for the default `meetings live` listing. */
|
|
111
145
|
function selectLiveMeetingBots(bots, companyId, includeAll, now = new Date()) {
|
|
112
146
|
const companyBots = bots.filter((bot) => bot.companyId === companyId);
|
|
@@ -390,7 +424,8 @@ export function registerMeetingsCommand(program) {
|
|
|
390
424
|
if (!res.ok)
|
|
391
425
|
await failLiveResponse(res);
|
|
392
426
|
const data = (await res.json());
|
|
393
|
-
const
|
|
427
|
+
const ownBots = Array.isArray(data.bots) ? data.bots : [];
|
|
428
|
+
const bots = mergeLiveMeetingBots(ownBots, await fetchAttendedLiveBots(token, companyId));
|
|
394
429
|
const visible = selectLiveMeetingBots(bots, companyId, opts.all === true);
|
|
395
430
|
const readable = await mapWithConcurrency(visible, LIVE_LIST_SNAPSHOT_CONCURRENCY, async (bot) => {
|
|
396
431
|
if (!LIVE_SNAPSHOT_STATUSES.has(normalizedLiveBotStatus(bot)))
|