@openclaw/google-meet 2026.6.9-beta.1 → 2026.6.9

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,17 +1,8 @@
1
+ import { t as googleApiError } from "./google-api-errors-CDUYkIcK.js";
1
2
  import { uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
2
3
  import { fetchWithSsrFGuard } from "openclaw/plugin-sdk/ssrf-runtime";
3
4
  import { addTimerTimeoutGraceMs } from "openclaw/plugin-sdk/number-runtime";
4
5
  import { sleep } from "openclaw/plugin-sdk/runtime-env";
5
- //#region extensions/google-meet/src/google-api-errors.ts
6
- const REAUTH_HINT = "Re-run `openclaw googlemeet auth login` and store the refreshed oauth block.";
7
- function scopeText(scopes) {
8
- return scopes.map((scope) => `\`${scope}\``).join(", ");
9
- }
10
- async function googleApiError(params) {
11
- const scopeHint = params.scopes && params.scopes.length > 0 ? ` Required OAuth scope: ${scopeText(params.scopes)}. ${REAUTH_HINT}` : "";
12
- return /* @__PURE__ */ new Error(`${params.prefix} failed (${params.response.status}): ${params.detail}${scopeHint}`);
13
- }
14
- //#endregion
15
6
  //#region extensions/google-meet/src/drive.ts
16
7
  const GOOGLE_DRIVE_API_BASE_URL = "https://www.googleapis.com/drive/v3";
17
8
  const GOOGLE_DRIVE_API_HOST = "www.googleapis.com";
@@ -46,7 +37,6 @@ async function exportGoogleDriveDocumentText(params) {
46
37
  try {
47
38
  if (!response.ok) throw await googleApiError({
48
39
  response,
49
- detail: await response.text(),
50
40
  prefix: "Google Drive files.export",
51
41
  scopes: [GOOGLE_DRIVE_MEET_SCOPE]
52
42
  });
@@ -123,7 +113,6 @@ async function fetchGoogleMeetJson(params) {
123
113
  try {
124
114
  if (!response.ok) throw await googleApiError({
125
115
  response,
126
- detail: await response.text(),
127
116
  prefix: params.errorPrefix,
128
117
  scopes: [GOOGLE_MEET_MEDIA_SCOPE]
129
118
  });
@@ -167,7 +156,6 @@ async function fetchGoogleMeetSpace(params) {
167
156
  try {
168
157
  if (!response.ok) throw await googleApiError({
169
158
  response,
170
- detail: await response.text(),
171
159
  prefix: "Google Meet spaces.get",
172
160
  scopes: [GOOGLE_MEET_SPACE_SCOPE]
173
161
  });
@@ -197,7 +185,6 @@ async function createGoogleMeetSpace(params) {
197
185
  try {
198
186
  if (!response.ok) throw await googleApiError({
199
187
  response,
200
- detail: await response.text(),
201
188
  prefix: "Google Meet spaces.create",
202
189
  scopes: params.config && Object.keys(params.config).length > 0 ? [GOOGLE_MEET_SPACE_CREATED_SCOPE, GOOGLE_MEET_SPACE_SETTINGS_SCOPE] : [GOOGLE_MEET_SPACE_CREATED_SCOPE]
203
190
  });
@@ -235,7 +222,6 @@ async function endGoogleMeetActiveConference(params) {
235
222
  try {
236
223
  if (!response.ok) throw await googleApiError({
237
224
  response,
238
- detail: await response.text(),
239
225
  prefix: "Google Meet spaces.endActiveConference",
240
226
  scopes: [GOOGLE_MEET_SPACE_CREATED_SCOPE]
241
227
  });
@@ -964,4 +950,4 @@ async function createMeetWithBrowserProxyOnNode(params) {
964
950
  throw new Error(lastResult?.manualAction ?? `Google Meet did not return a meeting URL from the browser create flow before timeout.${lastError ? ` Last browser automation error: ${formatBrowserAutomationError(lastError)}` : ""}`);
965
951
  }
966
952
  //#endregion
967
- export { googleApiError as _, isSameMeetUrlForReuse as a, resolveChromeNode as c, createGoogleMeetSpace as d, endGoogleMeetActiveConference as f, fetchLatestGoogleMeetConferenceRecord as g, fetchGoogleMeetSpace as h, callBrowserProxyOnNode as i, resolveChromeNodeInfo as l, fetchGoogleMeetAttendance as m, isGoogleMeetBrowserManualActionError as n, normalizeMeetUrlForReuse as o, fetchGoogleMeetArtifacts as p, asBrowserTabs as r, readBrowserTab as s, createMeetWithBrowserProxyOnNode as t, buildGoogleMeetPreflightReport as u };
953
+ export { isSameMeetUrlForReuse as a, resolveChromeNode as c, createGoogleMeetSpace as d, endGoogleMeetActiveConference as f, fetchLatestGoogleMeetConferenceRecord as g, fetchGoogleMeetSpace as h, callBrowserProxyOnNode as i, resolveChromeNodeInfo as l, fetchGoogleMeetAttendance as m, isGoogleMeetBrowserManualActionError as n, normalizeMeetUrlForReuse as o, fetchGoogleMeetArtifacts as p, asBrowserTabs as r, readBrowserTab as s, createMeetWithBrowserProxyOnNode as t, buildGoogleMeetPreflightReport as u };
@@ -1,7 +1,7 @@
1
- import { d as createGoogleMeetSpace, f as endGoogleMeetActiveConference, g as fetchLatestGoogleMeetConferenceRecord, h as fetchGoogleMeetSpace, m as fetchGoogleMeetAttendance, p as fetchGoogleMeetArtifacts, u as buildGoogleMeetPreflightReport } from "./chrome-create-By4DuikO.js";
2
- import { a as buildGoogleMeetCalendarDayWindow, i as resolveGoogleMeetGatewayOperationTimeoutMs, o as findGoogleMeetCalendarEvent, s as listGoogleMeetCalendarEvents } from "./config-Co24FcXM.js";
3
- import { buildGoogleMeetAuthUrl, createGoogleMeetOAuthState, createGoogleMeetPkce, exchangeGoogleMeetAuthCode, resolveGoogleMeetAccessToken, waitForGoogleMeetAuthCode } from "./oauth--J53aI66.js";
4
- import { hasCreateSpaceConfigInput, resolveCreateSpaceConfig } from "./create-BzkoPzD2.js";
1
+ import { a as buildGoogleMeetCalendarDayWindow, i as resolveGoogleMeetGatewayOperationTimeoutMs, o as findGoogleMeetCalendarEvent, s as listGoogleMeetCalendarEvents } from "./config-D_YKxh0m.js";
2
+ import { d as createGoogleMeetSpace, f as endGoogleMeetActiveConference, g as fetchLatestGoogleMeetConferenceRecord, h as fetchGoogleMeetSpace, m as fetchGoogleMeetAttendance, p as fetchGoogleMeetArtifacts, u as buildGoogleMeetPreflightReport } from "./chrome-create-DWEeDc7N.js";
3
+ import { buildGoogleMeetAuthUrl, createGoogleMeetOAuthState, createGoogleMeetPkce, exchangeGoogleMeetAuthCode, resolveGoogleMeetAccessToken, waitForGoogleMeetAuthCode } from "./oauth-BzOU5Ztq.js";
4
+ import { hasCreateSpaceConfigInput, resolveCreateSpaceConfig } from "./create-C7GxW7BL.js";
5
5
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
6
6
  import { callGatewayFromCli } from "openclaw/plugin-sdk/gateway-runtime";
7
7
  import { clampTimerTimeoutMs, parseStrictPositiveInteger } from "openclaw/plugin-sdk/number-runtime";
@@ -1,4 +1,4 @@
1
- import { _ as googleApiError } from "./chrome-create-By4DuikO.js";
1
+ import { t as googleApiError } from "./google-api-errors-CDUYkIcK.js";
2
2
  import { asRecord, normalizeOptionalLowercaseString, normalizeOptionalString, normalizeOptionalTrimmedStringList } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  import { fetchWithSsrFGuard } from "openclaw/plugin-sdk/ssrf-runtime";
4
4
  import { addTimerTimeoutGraceMs, resolvePositiveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
@@ -95,7 +95,6 @@ async function fetchGoogleCalendarEvents(params) {
95
95
  try {
96
96
  if (!response.ok) throw await googleApiError({
97
97
  response,
98
- detail: await response.text(),
99
98
  prefix: "Google Calendar events.list",
100
99
  scopes: [GOOGLE_CALENDAR_EVENTS_SCOPE]
101
100
  });
@@ -1,5 +1,5 @@
1
- import { d as createGoogleMeetSpace, t as createMeetWithBrowserProxyOnNode } from "./chrome-create-By4DuikO.js";
2
- import { resolveGoogleMeetAccessToken } from "./oauth--J53aI66.js";
1
+ import { d as createGoogleMeetSpace, t as createMeetWithBrowserProxyOnNode } from "./chrome-create-DWEeDc7N.js";
2
+ import { resolveGoogleMeetAccessToken } from "./oauth-BzOU5Ztq.js";
3
3
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  //#region extensions/google-meet/src/create.ts
5
5
  function normalizeTransport(value) {
@@ -0,0 +1,17 @@
1
+ import { readResponseTextLimited } from "openclaw/plugin-sdk/provider-http";
2
+ //#region extensions/google-meet/src/google-api-errors.ts
3
+ const REAUTH_HINT = "Re-run `openclaw googlemeet auth login` and store the refreshed oauth block.";
4
+ const GOOGLE_API_ERROR_BODY_LIMIT_BYTES = 8 * 1024;
5
+ function scopeText(scopes) {
6
+ return scopes.map((scope) => `\`${scope}\``).join(", ");
7
+ }
8
+ async function readGoogleApiErrorDetail(response) {
9
+ return await readResponseTextLimited(response, GOOGLE_API_ERROR_BODY_LIMIT_BYTES);
10
+ }
11
+ async function googleApiError(params) {
12
+ const detail = await readGoogleApiErrorDetail(params.response);
13
+ const scopeHint = params.scopes && params.scopes.length > 0 ? ` Required OAuth scope: ${scopeText(params.scopes)}. ${REAUTH_HINT}` : "";
14
+ return /* @__PURE__ */ new Error(`${params.prefix} failed (${params.response.status}): ${detail}${scopeHint}`);
15
+ }
16
+ //#endregion
17
+ export { readGoogleApiErrorDetail as n, googleApiError as t };
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { a as isSameMeetUrlForReuse, c as resolveChromeNode, f as endGoogleMeetActiveConference, g as fetchLatestGoogleMeetConferenceRecord, h as fetchGoogleMeetSpace, i as callBrowserProxyOnNode, l as resolveChromeNodeInfo, m as fetchGoogleMeetAttendance, n as isGoogleMeetBrowserManualActionError, o as normalizeMeetUrlForReuse, p as fetchGoogleMeetArtifacts, r as asBrowserTabs, s as readBrowserTab, t as createMeetWithBrowserProxyOnNode, u as buildGoogleMeetPreflightReport } from "./chrome-create-By4DuikO.js";
2
- import { a as buildGoogleMeetCalendarDayWindow, i as resolveGoogleMeetGatewayOperationTimeoutMs, n as DEFAULT_GOOGLE_MEET_AUDIO_OUTPUT_COMMAND, o as findGoogleMeetCalendarEvent, r as resolveGoogleMeetConfig, s as listGoogleMeetCalendarEvents, t as DEFAULT_GOOGLE_MEET_AUDIO_INPUT_COMMAND } from "./config-Co24FcXM.js";
1
+ import { a as buildGoogleMeetCalendarDayWindow, i as resolveGoogleMeetGatewayOperationTimeoutMs, n as DEFAULT_GOOGLE_MEET_AUDIO_OUTPUT_COMMAND, o as findGoogleMeetCalendarEvent, r as resolveGoogleMeetConfig, s as listGoogleMeetCalendarEvents, t as DEFAULT_GOOGLE_MEET_AUDIO_INPUT_COMMAND } from "./config-D_YKxh0m.js";
2
+ import { a as isSameMeetUrlForReuse, c as resolveChromeNode, f as endGoogleMeetActiveConference, g as fetchLatestGoogleMeetConferenceRecord, h as fetchGoogleMeetSpace, i as callBrowserProxyOnNode, l as resolveChromeNodeInfo, m as fetchGoogleMeetAttendance, n as isGoogleMeetBrowserManualActionError, o as normalizeMeetUrlForReuse, p as fetchGoogleMeetArtifacts, r as asBrowserTabs, s as readBrowserTab, t as createMeetWithBrowserProxyOnNode, u as buildGoogleMeetPreflightReport } from "./chrome-create-DWEeDc7N.js";
3
3
  import { optionalPositiveIntegerSchema, readPositiveIntegerParam } from "openclaw/plugin-sdk/channel-actions";
4
4
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
5
5
  import { ErrorCodes, GatewayClient, callGatewayFromCli, errorShape, startGatewayClientWhenEventLoopReady } from "openclaw/plugin-sdk/gateway-runtime";
@@ -543,7 +543,6 @@ function addGoogleMeetSetupCheck(status, check) {
543
543
  }
544
544
  //#endregion
545
545
  //#region extensions/google-meet/src/agent-consult.ts
546
- const GOOGLE_MEET_AGENT_CONSULT_TOOL_NAME = REALTIME_VOICE_AGENT_CONSULT_TOOL_NAME;
547
546
  const GOOGLE_MEET_CONSULT_SYSTEM_PROMPT = [
548
547
  "You are a behind-the-scenes consultant for a live meeting voice agent.",
549
548
  "Prioritize a fast, speakable answer over exhaustive investigation.",
@@ -598,7 +597,7 @@ function handleGoogleMeetRealtimeConsultToolCall(params) {
598
597
  params.session.submitToolResult(callId, { error: `Tool "${params.event.name}" is only available in bidi realtime strategy` });
599
598
  return;
600
599
  }
601
- if (params.event.name !== GOOGLE_MEET_AGENT_CONSULT_TOOL_NAME) {
600
+ if (params.event.name !== REALTIME_VOICE_AGENT_CONSULT_TOOL_NAME) {
602
601
  params.onTalkEvent?.({
603
602
  type: "tool.error",
604
603
  callId,
@@ -3726,11 +3725,11 @@ var GoogleMeetRuntime = class {
3726
3725
  let googleMeetCreateModulePromise = null;
3727
3726
  let googleMeetCliModulePromise = null;
3728
3727
  const loadGoogleMeetCreateModule = async () => {
3729
- googleMeetCreateModulePromise ??= import("./create-BzkoPzD2.js");
3728
+ googleMeetCreateModulePromise ??= import("./create-C7GxW7BL.js");
3730
3729
  return await googleMeetCreateModulePromise;
3731
3730
  };
3732
3731
  const loadGoogleMeetCliModule = async () => {
3733
- googleMeetCliModulePromise ??= import("./cli-DURm3Y-K.js");
3732
+ googleMeetCliModulePromise ??= import("./cli-BnEq0tBJ.js");
3734
3733
  return await googleMeetCliModulePromise;
3735
3734
  };
3736
3735
  const googleMeetConfigSchema = {
@@ -4103,7 +4102,7 @@ async function createAndJoinMeetFromParams(params) {
4103
4102
  return (await loadGoogleMeetCreateModule()).createAndJoinMeetFromParams(params);
4104
4103
  }
4105
4104
  async function resolveGoogleMeetTokenFromParams(config, raw) {
4106
- const { resolveGoogleMeetAccessToken } = await import("./oauth--J53aI66.js");
4105
+ const { resolveGoogleMeetAccessToken } = await import("./oauth-BzOU5Ztq.js");
4107
4106
  return resolveGoogleMeetAccessToken({
4108
4107
  clientId: normalizeOptionalString(raw.clientId) ?? config.oauth.clientId,
4109
4108
  clientSecret: normalizeOptionalString(raw.clientSecret) ?? config.oauth.clientSecret,
@@ -1,3 +1,4 @@
1
+ import { n as readGoogleApiErrorDetail } from "./google-api-errors-CDUYkIcK.js";
1
2
  import { fetchWithSsrFGuard } from "openclaw/plugin-sdk/ssrf-runtime";
2
3
  import { MAX_DATE_TIMESTAMP_MS, resolveDateTimestampMs, resolveExpiresAtMsFromDurationSeconds } from "openclaw/plugin-sdk/number-runtime";
3
4
  import { generateHexPkceVerifierChallenge } from "openclaw/plugin-sdk/provider-auth";
@@ -50,7 +51,7 @@ async function executeGoogleTokenRequest(body) {
50
51
  });
51
52
  try {
52
53
  if (!response.ok) {
53
- const detail = await response.text();
54
+ const detail = await readGoogleApiErrorDetail(response);
54
55
  throw new Error(`Google OAuth token request failed (${response.status}): ${detail}`);
55
56
  }
56
57
  const payload = await response.json();
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@openclaw/google-meet",
3
- "version": "2026.6.9-beta.1",
3
+ "version": "2026.6.9",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@openclaw/google-meet",
9
- "version": "2026.6.9-beta.1",
9
+ "version": "2026.6.9",
10
10
  "dependencies": {
11
11
  "commander": "14.0.3",
12
12
  "typebox": "1.1.39"
13
13
  },
14
14
  "peerDependencies": {
15
- "openclaw": ">=2026.6.9-beta.1"
15
+ "openclaw": ">=2026.6.9"
16
16
  },
17
17
  "peerDependenciesMeta": {
18
18
  "openclaw": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/google-meet",
3
- "version": "2026.6.9-beta.1",
3
+ "version": "2026.6.9",
4
4
  "description": "OpenClaw Google Meet participant plugin for joining calls through Chrome or Twilio transports.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -12,7 +12,7 @@
12
12
  "typebox": "1.1.39"
13
13
  },
14
14
  "peerDependencies": {
15
- "openclaw": ">=2026.6.9-beta.1"
15
+ "openclaw": ">=2026.6.9"
16
16
  },
17
17
  "peerDependenciesMeta": {
18
18
  "openclaw": {
@@ -29,10 +29,10 @@
29
29
  "minHostVersion": ">=2026.4.20"
30
30
  },
31
31
  "compat": {
32
- "pluginApi": ">=2026.6.9-beta.1"
32
+ "pluginApi": ">=2026.6.9"
33
33
  },
34
34
  "build": {
35
- "openclawVersion": "2026.6.9-beta.1"
35
+ "openclawVersion": "2026.6.9"
36
36
  },
37
37
  "release": {
38
38
  "publishToClawHub": true,