@openclaw/google-meet 2026.9.7 → 2026.10.1-beta.1

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.
@@ -1,4 +1,4 @@
1
- import { _ as __exportAll } from "./plugin-helpers-CdQ_YNA7.mjs";
1
+ import { g as __exportAll } from "./plugin-helpers-D1OyyzEZ.mjs";
2
2
  import { clampTimerTimeoutMs, parseStrictPositiveInteger } from "openclaw/plugin-sdk/number-runtime";
3
3
  import fsp, { stat } from "node:fs/promises";
4
4
  import path from "node:path";
@@ -19,6 +19,17 @@ function parseGoogleMeetTransport(value) {
19
19
  if (value === void 0 || value === "chrome" || value === "chrome-node" || value === "twilio") return value;
20
20
  throw new Error(`transport must be chrome, chrome-node, or twilio; received ${value}`);
21
21
  }
22
+ function resolveCliJoinRequest(url, options) {
23
+ return {
24
+ url,
25
+ transport: parseGoogleMeetTransport(options.transport),
26
+ mode: parseGoogleMeetMode(options.mode),
27
+ message: options.message,
28
+ dialInNumber: options.dialInNumber,
29
+ pin: options.pin,
30
+ dtmfSequence: options.dtmfSequence
31
+ };
32
+ }
22
33
  function parseGoogleMeetBrowserTransport(value) {
23
34
  const transport = parseGoogleMeetTransport(value);
24
35
  if (transport === "twilio") throw new Error(`transport must be chrome or chrome-node; received ${value}`);
@@ -239,45 +250,28 @@ var cli_export_exports = /* @__PURE__ */ __exportAll({
239
250
  buildGoogleMeetExportManifest: () => buildGoogleMeetExportManifest,
240
251
  exportGoogleMeetBundle: () => exportGoogleMeetBundle,
241
252
  googleMeetExportFileNames: () => googleMeetExportFileNames,
242
- renderArtifactsMarkdown: () => renderArtifactsMarkdown,
243
- renderArtifactsSummary: () => renderArtifactsSummary,
253
+ renderArtifacts: () => renderArtifacts,
254
+ renderAttendance: () => renderAttendance,
244
255
  renderAttendanceCsv: () => renderAttendanceCsv,
245
- renderAttendanceMarkdown: () => renderAttendanceMarkdown,
246
- renderAttendanceSummary: () => renderAttendanceSummary,
247
256
  writeCalendarEventsSummary: () => writeCalendarEventsSummary,
248
257
  writeLatestConferenceRecordSummary: () => writeLatestConferenceRecordSummary,
249
258
  writeMeetExportBundle: () => writeMeetExportBundle
250
259
  });
251
- function renderArtifactsSummary(result) {
252
- const lines = [];
253
- if (result.input) lines.push(`input: ${result.input}`);
254
- if (result.space) lines.push(`space: ${result.space.name}`);
255
- lines.push(`conference records: ${result.conferenceRecords.length}`);
256
- for (const entry of result.artifacts) {
257
- lines.push("");
258
- lines.push(`record: ${entry.conferenceRecord.name}`);
259
- lines.push(`started: ${formatOptional(entry.conferenceRecord.startTime)}`);
260
- lines.push(`ended: ${formatOptional(entry.conferenceRecord.endTime)}`);
261
- lines.push(`participants: ${entry.participants.length}`);
262
- lines.push(`recordings: ${entry.recordings.length}`);
263
- lines.push(`transcripts: ${entry.transcripts.length}`);
264
- lines.push(`transcript entries: ${entry.transcriptEntries.reduce((count, transcript) => count + transcript.entries.length, 0)}`);
265
- lines.push(`smart notes: ${entry.smartNotes.length}`);
266
- if (entry.smartNotesError) lines.push(`smart notes warning: ${entry.smartNotesError}`);
267
- for (const recording of entry.recordings) lines.push(`- recording: ${recording.name}`);
268
- for (const transcript of entry.transcripts) {
269
- lines.push(`- transcript: ${transcript.name}`);
270
- if (transcript.documentTextError) lines.push(`- transcript document body warning: ${transcript.documentTextError}`);
271
- }
272
- for (const transcriptEntries of entry.transcriptEntries) if (transcriptEntries.entriesError) lines.push(`- transcript entries warning: ${transcriptEntries.transcript}: ${transcriptEntries.entriesError}`);
273
- for (const smartNote of entry.smartNotes) {
274
- lines.push(`- smart note: ${smartNote.name}`);
275
- if (smartNote.documentTextError) lines.push(`- smart note document body warning: ${smartNote.documentTextError}`);
276
- }
260
+ function appendArtifactSummary(lines, entry) {
261
+ if (entry.smartNotesError) lines.push(`smart notes warning: ${entry.smartNotesError}`);
262
+ for (const recording of entry.recordings) lines.push(`- recording: ${recording.name}`);
263
+ for (const transcript of entry.transcripts) {
264
+ lines.push(`- transcript: ${transcript.name}`);
265
+ if (transcript.documentTextError) lines.push(`- transcript document body warning: ${transcript.documentTextError}`);
266
+ }
267
+ for (const transcriptEntries of entry.transcriptEntries) if (transcriptEntries.entriesError) lines.push(`- transcript entries warning: ${transcriptEntries.transcript}: ${transcriptEntries.entriesError}`);
268
+ for (const smartNote of entry.smartNotes) {
269
+ lines.push(`- smart note: ${smartNote.name}`);
270
+ if (smartNote.documentTextError) lines.push(`- smart note document body warning: ${smartNote.documentTextError}`);
277
271
  }
278
- return `${lines.join("\n")}\n`;
279
272
  }
280
- function renderAttendance(result, markdown) {
273
+ function renderAttendance(result, format) {
274
+ const markdown = format === "markdown";
281
275
  const lines = markdown ? ["# Google Meet Attendance"] : [];
282
276
  const field = (label, value) => {
283
277
  lines.push(`${markdown ? label : label.toLowerCase()}: ${value}`);
@@ -303,12 +297,6 @@ function renderAttendance(result, markdown) {
303
297
  }
304
298
  return `${lines.join("\n")}\n`;
305
299
  }
306
- function renderAttendanceSummary(result) {
307
- return renderAttendance(result, false);
308
- }
309
- function renderAttendanceMarkdown(result) {
310
- return renderAttendance(result, true);
311
- }
312
300
  function writeLatestConferenceRecordSummary(result) {
313
301
  writeStdoutLine("input: %s", result.input);
314
302
  writeStdoutLine("space: %s", result.space.name);
@@ -345,23 +333,30 @@ function appendArtifactDocuments(lines, title, documents) {
345
333
  else if (document.documentText) lines.push(` - Document body: ${document.documentText.length} chars`);
346
334
  }
347
335
  }
348
- function renderArtifactsMarkdown(result) {
349
- const lines = ["# Google Meet Artifacts"];
350
- if (result.input) lines.push(`Input: ${result.input}`);
351
- if (result.space) lines.push(`Space: ${result.space.name}`);
352
- lines.push("");
353
- lines.push(`Conference records: ${result.conferenceRecords.length}`);
336
+ function renderArtifacts(result, format) {
337
+ const markdown = format === "markdown";
338
+ const lines = markdown ? ["# Google Meet Artifacts"] : [];
339
+ const field = (label, value) => {
340
+ lines.push(`${markdown ? label : label.toLowerCase()}: ${value}`);
341
+ };
342
+ if (result.input) field("Input", result.input);
343
+ if (result.space) field("Space", result.space.name);
344
+ if (markdown) lines.push("");
345
+ field("Conference records", result.conferenceRecords.length);
354
346
  for (const entry of result.artifacts) {
355
- lines.push("");
356
- lines.push(`## ${entry.conferenceRecord.name}`);
357
- lines.push(`Started: ${formatOptional(entry.conferenceRecord.startTime)}`);
358
- lines.push(`Ended: ${formatOptional(entry.conferenceRecord.endTime)}`);
359
- lines.push("");
360
- lines.push(`Participants: ${entry.participants.length}`);
361
- lines.push(`Recordings: ${entry.recordings.length}`);
362
- lines.push(`Transcripts: ${entry.transcripts.length}`);
363
- lines.push(`Transcript entries: ${entry.transcriptEntries.reduce((count, transcript) => count + transcript.entries.length, 0)}`);
364
- lines.push(`Smart notes: ${entry.smartNotes.length}`);
347
+ lines.push("", `${markdown ? "##" : "record:"} ${entry.conferenceRecord.name}`);
348
+ field("Started", formatOptional(entry.conferenceRecord.startTime));
349
+ field("Ended", formatOptional(entry.conferenceRecord.endTime));
350
+ if (markdown) lines.push("");
351
+ field("Participants", entry.participants.length);
352
+ field("Recordings", entry.recordings.length);
353
+ field("Transcripts", entry.transcripts.length);
354
+ field("Transcript entries", entry.transcriptEntries.reduce((count, transcript) => count + transcript.entries.length, 0));
355
+ field("Smart notes", entry.smartNotes.length);
356
+ if (!markdown) {
357
+ appendArtifactSummary(lines, entry);
358
+ continue;
359
+ }
365
360
  const warnings = collectGoogleMeetArtifactWarnings({
366
361
  conferenceRecords: [entry.conferenceRecord],
367
362
  artifacts: [entry]
@@ -563,7 +558,7 @@ async function writeMeetExportBundle(params) {
563
558
  const files = [
564
559
  {
565
560
  name: "summary.md",
566
- content: `${renderArtifactsMarkdown(params.artifacts)}\n${renderAttendanceMarkdown(params.attendance)}`
561
+ content: `${renderArtifacts(params.artifacts, "markdown")}\n${renderAttendance(params.attendance, "markdown")}`
567
562
  },
568
563
  {
569
564
  name: "attendance.csv",
@@ -629,4 +624,4 @@ async function exportGoogleMeetBundle(params) {
629
624
  };
630
625
  }
631
626
  //#endregion
632
- export { writeSetupStatus as C, writeRecoverCurrentTabResult as S, writeStdoutLine as T, promptInput as _, renderAttendanceCsv as a, writeDoctorStatus as b, writeCalendarEventsSummary as c, parseGoogleMeetBrowserTransport as d, parseGoogleMeetMode as f, parsePositiveNumber as g, parsePositiveIntegerOption as h, renderArtifactsSummary as i, writeLatestConferenceRecordSummary as l, parseOptionalNumber as m, exportGoogleMeetBundle as n, renderAttendanceMarkdown as o, parseGoogleMeetTransport as p, renderArtifactsMarkdown as r, renderAttendanceSummary as s, cli_export_exports as t, callGoogleMeetGateway as u, resolveGoogleMeetOAuthCallbackTimeoutMs as v, writeStdoutJson as w, writeLeaveResult as x, writeCliOutput as y };
627
+ export { writeStdoutJson as C, writeSetupStatus as S, resolveGoogleMeetOAuthCallbackTimeoutMs as _, renderAttendanceCsv as a, writeLeaveResult as b, callGoogleMeetGateway as c, parseGoogleMeetTransport as d, parseOptionalNumber as f, resolveCliJoinRequest as g, promptInput as h, renderAttendance as i, parseGoogleMeetBrowserTransport as l, parsePositiveNumber as m, exportGoogleMeetBundle as n, writeCalendarEventsSummary as o, parsePositiveIntegerOption as p, renderArtifacts as r, writeLatestConferenceRecordSummary as s, cli_export_exports as t, parseGoogleMeetMode as u, writeCliOutput as v, writeStdoutLine as w, writeRecoverCurrentTabResult as x, writeDoctorStatus as y };
@@ -1,6 +1,6 @@
1
- import { _ as __exportAll, o as resolveGoogleMeetTokenFromParams, u as createGoogleMeetSpace } from "./plugin-helpers-CdQ_YNA7.mjs";
2
- import { d as normalizeTransport, u as normalizeMode } from "./plugin-registration-aCEuCerg.mjs";
3
- import { t as createMeetWithBrowserProxyOnNode } from "./chrome-create-wuAK5Pnq.mjs";
1
+ import { g as __exportAll, o as resolveGoogleMeetTokenFromParams, u as createGoogleMeetSpace } from "./plugin-helpers-D1OyyzEZ.mjs";
2
+ import { d as normalizeMode, f as normalizeTransport } from "./plugin-registration-BP83dqMw.mjs";
3
+ import { t as createMeetWithBrowserProxyOnNode } from "./chrome-create-Bh1L33pr.mjs";
4
4
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  //#region extensions/google-meet/src/create.ts
6
6
  var create_exports = /* @__PURE__ */ __exportAll({
@@ -0,0 +1,50 @@
1
+ import { readResponseTextLimited } from "openclaw/plugin-sdk/provider-http";
2
+ import { fetchWithSsrFGuard } from "openclaw/plugin-sdk/ssrf-runtime";
3
+ //#region extensions/google-meet/src/google-api.ts
4
+ const REAUTH_HINT = "Re-run `openclaw googlemeet auth login` and store the refreshed oauth block.";
5
+ const GOOGLE_API_ERROR_BODY_LIMIT_BYTES = 8192;
6
+ function scopeText(scopes) {
7
+ return scopes.map((scope) => `\`${scope}\``).join(", ");
8
+ }
9
+ async function readGoogleApiErrorDetail(response) {
10
+ return await readResponseTextLimited(response, GOOGLE_API_ERROR_BODY_LIMIT_BYTES);
11
+ }
12
+ async function googleApiError(params) {
13
+ const detail = await readGoogleApiErrorDetail(params.response);
14
+ const scopeHint = params.scopes && params.scopes.length > 0 ? ` Required OAuth scope: ${scopeText(params.scopes)}. ${REAUTH_HINT}` : "";
15
+ return /* @__PURE__ */ new Error(`${params.prefix} failed (${params.response.status}): ${detail}${scopeHint}`);
16
+ }
17
+ function appendQuery(url, query) {
18
+ if (!query) return url;
19
+ const parsed = new URL(url);
20
+ for (const [key, value] of Object.entries(query)) if (value !== void 0) parsed.searchParams.set(key, String(value));
21
+ return parsed.toString();
22
+ }
23
+ async function requestGoogleApi(params, read) {
24
+ const { response, release } = await fetchWithSsrFGuard({
25
+ url: appendQuery(params.url, params.query),
26
+ init: {
27
+ ...params.init,
28
+ headers: {
29
+ Authorization: `Bearer ${params.accessToken}`,
30
+ Accept: params.accept ?? "application/json",
31
+ ...params.init?.body === void 0 ? {} : { "Content-Type": "application/json" }
32
+ }
33
+ },
34
+ policy: { allowedHostnames: [params.allowedHostname] },
35
+ auditContext: params.auditContext,
36
+ timeoutMs: 3e4
37
+ });
38
+ try {
39
+ if (!response.ok) throw await googleApiError({
40
+ response,
41
+ prefix: params.prefix,
42
+ scopes: params.scopes
43
+ });
44
+ return await read(response);
45
+ } finally {
46
+ await release();
47
+ }
48
+ }
49
+ //#endregion
50
+ export { requestGoogleApi as n, readGoogleApiErrorDetail as t };
@@ -1,6 +1,6 @@
1
1
  import { n as GOOGLE_MEET_NODE_COMMAND } from "./google-meet-platform-constants-CnRfrYX7.mjs";
2
2
  import { t as normalizeMeetUrl } from "./meet-url-BP2Jlvjs.mjs";
3
- import { a as isSameMeetUrlForReuse, i as isRecoverableMeetTab, n as forceMeetEnglishUi, o as normalizeMeetUrlForReuse, r as isEnglishMeetTab, s as readMeetAuthUser, t as createMeetWithBrowserProxyOnNode } from "./chrome-create-wuAK5Pnq.mjs";
3
+ import { a as isSameMeetUrlForReuse, i as isRecoverableMeetTab, n as forceMeetEnglishUi, o as normalizeMeetUrlForReuse, r as isEnglishMeetTab, s as readMeetAuthUser, t as createMeetWithBrowserProxyOnNode } from "./chrome-create-Bh1L33pr.mjs";
4
4
  import { asRecord, filterStringEntries, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
6
6
  import { MeetingPlatformAdapter } from "openclaw/plugin-sdk/meeting-runtime";
@@ -1,6 +1,6 @@
1
1
  import { n as GOOGLE_MEET_NODE_COMMAND } from "./google-meet-platform-constants-CnRfrYX7.mjs";
2
2
  import { n as DEFAULT_GOOGLE_MEET_AUDIO_OUTPUT_COMMAND, t as DEFAULT_GOOGLE_MEET_AUDIO_INPUT_COMMAND } from "./config-BXGAMntj.mjs";
3
- import { t as GOOGLE_MEET_PLATFORM_ADAPTER } from "./google-meet-platform-adapter-gosgbMIM.mjs";
3
+ import { t as GOOGLE_MEET_PLATFORM_ADAPTER } from "./google-meet-platform-adapter-CKXMbP3X.mjs";
4
4
  import { MeetingPlatformAdapter } from "openclaw/plugin-sdk/meeting-runtime";
5
5
  //#region extensions/google-meet/src/node-host.ts
6
6
  function normalizeMeetKey(value) {
@@ -1,8 +1,7 @@
1
1
  import { n as GOOGLE_MEET_NODE_COMMAND } from "./google-meet-platform-constants-CnRfrYX7.mjs";
2
- import { t as GOOGLE_MEET_PLATFORM_ADAPTER } from "./google-meet-platform-adapter-gosgbMIM.mjs";
2
+ import { t as GOOGLE_MEET_PLATFORM_ADAPTER } from "./google-meet-platform-adapter-CKXMbP3X.mjs";
3
3
  import { createMeetingBrowserNodeInvokePolicy } from "openclaw/plugin-sdk/meeting-runtime";
4
4
  //#region extensions/google-meet/src/node-invoke-policy.ts
5
- const GOOGLE_MEET_CHROME_NODE_COMMAND = GOOGLE_MEET_NODE_COMMAND;
6
5
  const START_MODES = /* @__PURE__ */ new Set([
7
6
  "agent",
8
7
  "bidi",
@@ -11,7 +10,7 @@ const START_MODES = /* @__PURE__ */ new Set([
11
10
  ]);
12
11
  function createGoogleMeetChromeNodeInvokePolicy(config) {
13
12
  return createMeetingBrowserNodeInvokePolicy({
14
- commandName: GOOGLE_MEET_CHROME_NODE_COMMAND,
13
+ commandName: GOOGLE_MEET_NODE_COMMAND,
15
14
  displayName: "Google Meet",
16
15
  deniedCode: "GOOGLE_MEET_NODE_POLICY_DENIED",
17
16
  supportedModes: START_MODES,
@@ -21,4 +20,4 @@ function createGoogleMeetChromeNodeInvokePolicy(config) {
21
20
  });
22
21
  }
23
22
  //#endregion
24
- export { GOOGLE_MEET_CHROME_NODE_COMMAND, createGoogleMeetChromeNodeInvokePolicy };
23
+ export { createGoogleMeetChromeNodeInvokePolicy };
@@ -1,4 +1,4 @@
1
- import { g as readGoogleApiErrorDetail } from "./plugin-helpers-CdQ_YNA7.mjs";
1
+ import { t as readGoogleApiErrorDetail } from "./google-api-DEZ9mWx7.mjs";
2
2
  import { MAX_DATE_TIMESTAMP_MS, resolveDateTimestampMs, resolveExpiresAtMsFromDurationSeconds } from "openclaw/plugin-sdk/number-runtime";
3
3
  import { readProviderJsonResponse } from "openclaw/plugin-sdk/provider-http";
4
4
  import { fetchWithSsrFGuard } from "openclaw/plugin-sdk/ssrf-runtime";