@openclaw/google-meet 2026.6.11 → 2026.6.34

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,6 +1,7 @@
1
1
  import { t as googleApiError } from "./google-api-errors-CDUYkIcK.js";
2
2
  import { uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  import { fetchWithSsrFGuard } from "openclaw/plugin-sdk/ssrf-runtime";
4
+ import { readProviderTextResponse } from "openclaw/plugin-sdk/provider-http";
4
5
  import { addTimerTimeoutGraceMs } from "openclaw/plugin-sdk/number-runtime";
5
6
  import { sleep } from "openclaw/plugin-sdk/runtime-env";
6
7
  //#region extensions/google-meet/src/drive.ts
@@ -40,7 +41,7 @@ async function exportGoogleDriveDocumentText(params) {
40
41
  prefix: "Google Drive files.export",
41
42
  scopes: [GOOGLE_DRIVE_MEET_SCOPE]
42
43
  });
43
- return await response.text();
44
+ return await readProviderTextResponse(response, "Google Drive files.export");
44
45
  } finally {
45
46
  await release();
46
47
  }
@@ -1,7 +1,7 @@
1
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";
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-C48OmpbM.js";
3
+ import { buildGoogleMeetAuthUrl, createGoogleMeetOAuthState, createGoogleMeetPkce, exchangeGoogleMeetAuthCode, resolveGoogleMeetAccessToken, waitForGoogleMeetAuthCode } from "./oauth-DK1mwF2i.js";
4
+ import { hasCreateSpaceConfigInput, resolveCreateSpaceConfig } from "./create-C0XRpM4Z.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,5 +1,5 @@
1
- import { d as createGoogleMeetSpace, t as createMeetWithBrowserProxyOnNode } from "./chrome-create-DWEeDc7N.js";
2
- import { resolveGoogleMeetAccessToken } from "./oauth-BzOU5Ztq.js";
1
+ import { d as createGoogleMeetSpace, t as createMeetWithBrowserProxyOnNode } from "./chrome-create-C48OmpbM.js";
2
+ import { resolveGoogleMeetAccessToken } from "./oauth-DK1mwF2i.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) {
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
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";
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-C48OmpbM.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";
@@ -75,23 +75,21 @@ function wake(session) {
75
75
  for (const waiter of waiters) waiter();
76
76
  }
77
77
  function stopSession(session) {
78
- const wasClosed = session.closed;
78
+ if (session.closed) return;
79
79
  session.closed = true;
80
- session.closedAt ??= (/* @__PURE__ */ new Date()).toISOString();
80
+ session.closedAt = (/* @__PURE__ */ new Date()).toISOString();
81
81
  terminateChild(session.input);
82
82
  terminateChild(session.output);
83
- if (!wasClosed) wake(session);
83
+ wake(session);
84
84
  }
85
85
  function attachOutputProcessHandlers(session, outputProcess) {
86
- outputProcess.on("exit", () => {
86
+ const stopIfCurrent = () => {
87
87
  if (session.output === outputProcess) stopSession(session);
88
- });
89
- outputProcess.on("error", () => {
90
- if (session.output === outputProcess) stopSession(session);
91
- });
92
- outputProcess.stdin?.on?.("error", () => {
93
- if (session.output === outputProcess) stopSession(session);
94
- });
88
+ };
89
+ outputProcess.on("exit", stopIfCurrent);
90
+ outputProcess.on("error", stopIfCurrent);
91
+ outputProcess.stdin?.on("error", stopIfCurrent);
92
+ outputProcess.stderr?.on("error", stopIfCurrent);
95
93
  }
96
94
  function startOutputProcess(command) {
97
95
  return spawn(command.command, command.args, { stdio: [
@@ -132,9 +130,12 @@ function startCommandPair(params) {
132
130
  if (session.chunks.length > 200) session.chunks.splice(0, session.chunks.length - 200);
133
131
  wake(session);
134
132
  });
135
- inputProcess.on("exit", () => stopSession(session));
133
+ const stop = () => stopSession(session);
134
+ inputProcess.on("exit", stop);
135
+ inputProcess.on("error", stop);
136
+ inputProcess.stdout?.on("error", stop);
137
+ inputProcess.stderr?.on("error", stop);
136
138
  attachOutputProcessHandlers(session, outputProcess);
137
- inputProcess.on("error", () => stopSession(session));
138
139
  sessions.set(session.id, session);
139
140
  return session;
140
141
  }
@@ -3725,11 +3726,11 @@ var GoogleMeetRuntime = class {
3725
3726
  let googleMeetCreateModulePromise = null;
3726
3727
  let googleMeetCliModulePromise = null;
3727
3728
  const loadGoogleMeetCreateModule = async () => {
3728
- googleMeetCreateModulePromise ??= import("./create-C7GxW7BL.js");
3729
+ googleMeetCreateModulePromise ??= import("./create-C0XRpM4Z.js");
3729
3730
  return await googleMeetCreateModulePromise;
3730
3731
  };
3731
3732
  const loadGoogleMeetCliModule = async () => {
3732
- googleMeetCliModulePromise ??= import("./cli-BnEq0tBJ.js");
3733
+ googleMeetCliModulePromise ??= import("./cli-Cn8kxkfr.js");
3733
3734
  return await googleMeetCliModulePromise;
3734
3735
  };
3735
3736
  const googleMeetConfigSchema = {
@@ -4102,7 +4103,7 @@ async function createAndJoinMeetFromParams(params) {
4102
4103
  return (await loadGoogleMeetCreateModule()).createAndJoinMeetFromParams(params);
4103
4104
  }
4104
4105
  async function resolveGoogleMeetTokenFromParams(config, raw) {
4105
- const { resolveGoogleMeetAccessToken } = await import("./oauth-BzOU5Ztq.js");
4106
+ const { resolveGoogleMeetAccessToken } = await import("./oauth-DK1mwF2i.js");
4106
4107
  return resolveGoogleMeetAccessToken({
4107
4108
  clientId: normalizeOptionalString(raw.clientId) ?? config.oauth.clientId,
4108
4109
  clientSecret: normalizeOptionalString(raw.clientSecret) ?? config.oauth.clientSecret,
@@ -124,25 +124,42 @@ function createGoogleMeetPkce() {
124
124
  function createGoogleMeetOAuthState() {
125
125
  return generateOAuthState();
126
126
  }
127
+ function isLocalCallbackListenerError(error) {
128
+ if (!(error instanceof Error)) return false;
129
+ return error.message.includes("EADDRINUSE") || error.message.includes("port") || error.message.includes("listen");
130
+ }
131
+ async function readManualGoogleMeetAuthCode(params) {
132
+ const parsed = parseOAuthCallbackInput(await params.promptInput("Paste the full redirect URL here: "), {
133
+ missingState: "Missing 'state' parameter. Paste the full redirect URL.",
134
+ invalidInput: "Paste the full redirect URL, not just the code."
135
+ });
136
+ if ("error" in parsed) throw new Error(parsed.error);
137
+ if (parsed.state !== params.state) throw new Error("OAuth state mismatch - please try again");
138
+ return parsed.code;
139
+ }
127
140
  async function waitForGoogleMeetAuthCode(params) {
128
141
  params.writeLine(`Open this URL in your browser:\n\n${params.authUrl}\n`);
129
- if (params.manual) {
130
- const parsed = parseOAuthCallbackInput(await params.promptInput("Paste the full redirect URL here: "), {
131
- missingState: "Missing 'state' parameter. Paste the full redirect URL.",
132
- invalidInput: "Paste the full redirect URL, not just the code."
142
+ if (params.manual) return await readManualGoogleMeetAuthCode({
143
+ state: params.state,
144
+ promptInput: params.promptInput
145
+ });
146
+ try {
147
+ return (await waitForLocalOAuthCallback({
148
+ expectedState: params.state,
149
+ timeoutMs: params.timeoutMs,
150
+ port: 8085,
151
+ callbackPath: "/oauth2callback",
152
+ redirectUri: GOOGLE_MEET_REDIRECT_URI,
153
+ successTitle: "Google Meet OAuth complete"
154
+ })).code;
155
+ } catch (error) {
156
+ if (!isLocalCallbackListenerError(error)) throw error;
157
+ params.writeLine("Local callback server failed. Switching to manual mode...");
158
+ return await readManualGoogleMeetAuthCode({
159
+ state: params.state,
160
+ promptInput: params.promptInput
133
161
  });
134
- if ("error" in parsed) throw new Error(parsed.error);
135
- if (parsed.state !== params.state) throw new Error("OAuth state mismatch - please try again");
136
- return parsed.code;
137
162
  }
138
- return (await waitForLocalOAuthCallback({
139
- expectedState: params.state,
140
- timeoutMs: params.timeoutMs,
141
- port: 8085,
142
- callbackPath: "/oauth2callback",
143
- redirectUri: GOOGLE_MEET_REDIRECT_URI,
144
- successTitle: "Google Meet OAuth complete"
145
- })).code;
146
163
  }
147
164
  //#endregion
148
165
  export { buildGoogleMeetAuthUrl, createGoogleMeetOAuthState, createGoogleMeetPkce, exchangeGoogleMeetAuthCode, resolveGoogleMeetAccessToken, waitForGoogleMeetAuthCode };
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@openclaw/google-meet",
3
- "version": "2026.6.11",
3
+ "version": "2026.6.34",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@openclaw/google-meet",
9
- "version": "2026.6.11",
9
+ "version": "2026.6.34",
10
10
  "dependencies": {
11
11
  "commander": "14.0.3",
12
12
  "typebox": "1.1.39"
13
13
  },
14
14
  "peerDependencies": {
15
- "openclaw": ">=2026.6.11"
15
+ "openclaw": ">=2026.6.34"
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.11",
3
+ "version": "2026.6.34",
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.11"
15
+ "openclaw": ">=2026.6.34"
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.11"
32
+ "pluginApi": ">=2026.6.34"
33
33
  },
34
34
  "build": {
35
- "openclawVersion": "2026.6.11"
35
+ "openclawVersion": "2026.6.34"
36
36
  },
37
37
  "release": {
38
38
  "publishToClawHub": true,