@openclaw/google-meet 2026.7.2-beta.7 → 2026.8.1-beta.2

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.
@@ -0,0 +1,17 @@
1
+ import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
2
+ //#region extensions/google-meet/src/meet-url.ts
3
+ function normalizeMeetUrl(input) {
4
+ const raw = normalizeOptionalString(input);
5
+ if (!raw) throw new Error("url required");
6
+ let url;
7
+ try {
8
+ url = new URL(raw);
9
+ } catch {
10
+ throw new Error("url must be a valid Google Meet URL");
11
+ }
12
+ if (url.protocol !== "https:" || url.hostname.toLowerCase() !== "meet.google.com" || url.port || url.username || url.password) throw new Error("url must be an explicit https://meet.google.com/... URL");
13
+ if (!/^\/[a-z]{3}-[a-z]{4}-[a-z]{3}(?:$|[/?#])/i.test(url.pathname)) throw new Error("url must include a Google Meet meeting code");
14
+ return url.toString();
15
+ }
16
+ //#endregion
17
+ export { normalizeMeetUrl as t };
@@ -0,0 +1,49 @@
1
+ import { n as GOOGLE_MEET_NODE_COMMAND } from "./google-meet-platform-constants-Bs5iAg3E.js";
2
+ import { n as DEFAULT_GOOGLE_MEET_AUDIO_OUTPUT_COMMAND, t as DEFAULT_GOOGLE_MEET_AUDIO_INPUT_COMMAND } from "./config-wBK8loBb.js";
3
+ import { t as GOOGLE_MEET_PLATFORM_ADAPTER } from "./google-meet-platform-adapter-C3J-iFRE.js";
4
+ import { MeetingPlatformAdapter } from "openclaw/plugin-sdk/meeting-runtime";
5
+ //#region extensions/google-meet/src/node-host.ts
6
+ function normalizeMeetKey(value) {
7
+ if (!value) return;
8
+ try {
9
+ const url = new URL(value);
10
+ if (url.hostname.toLowerCase() !== "meet.google.com") return value;
11
+ return /^\/([a-z]{3}-[a-z]{4}-[a-z]{3})(?:$|[/?#])/i.exec(url.pathname)?.[1]?.toLowerCase() ?? value;
12
+ } catch {
13
+ return value;
14
+ }
15
+ }
16
+ const googleMeetNodeHost = MeetingPlatformAdapter.createNodeHostHandler({
17
+ commandName: GOOGLE_MEET_NODE_COMMAND,
18
+ displayName: "Google Meet",
19
+ browserLabel: "Meet",
20
+ bridgeIdPrefix: "meet_node_",
21
+ defaultAudioInputCommand: DEFAULT_GOOGLE_MEET_AUDIO_INPUT_COMMAND,
22
+ defaultAudioOutputCommand: DEFAULT_GOOGLE_MEET_AUDIO_OUTPUT_COMMAND,
23
+ defaultAudio: {
24
+ backend: "auto",
25
+ bufferBytes: 4096,
26
+ format: "pcm16-24khz"
27
+ },
28
+ meetingLabel: "Google Meet",
29
+ sharePrerequisiteDeadline: true,
30
+ talkBackModes: /* @__PURE__ */ new Set([
31
+ "agent",
32
+ "bidi",
33
+ "realtime"
34
+ ]),
35
+ agentMode: "agent",
36
+ normalizeUrl: (url) => GOOGLE_MEET_PLATFORM_ADAPTER.urls.validateAndNormalize(url),
37
+ normalizeMeetingKey: normalizeMeetKey,
38
+ browser: {
39
+ application: "Google Chrome",
40
+ buildProfileArgs: (profile) => ["--args", `--profile-directory=${profile}`],
41
+ openedStatus: "chrome-opened",
42
+ openedNotes: ["Browser page control is handled by OpenClaw browser automation when using chrome-node."]
43
+ }
44
+ });
45
+ async function handleGoogleMeetNodeHostCommand(paramsJSON) {
46
+ return await googleMeetNodeHost(paramsJSON);
47
+ }
48
+ //#endregion
49
+ export { handleGoogleMeetNodeHostCommand };
@@ -0,0 +1,24 @@
1
+ import { n as GOOGLE_MEET_NODE_COMMAND } from "./google-meet-platform-constants-Bs5iAg3E.js";
2
+ import { t as GOOGLE_MEET_PLATFORM_ADAPTER } from "./google-meet-platform-adapter-C3J-iFRE.js";
3
+ import { createMeetingBrowserNodeInvokePolicy } from "openclaw/plugin-sdk/meeting-runtime";
4
+ //#region extensions/google-meet/src/node-invoke-policy.ts
5
+ const GOOGLE_MEET_CHROME_NODE_COMMAND = GOOGLE_MEET_NODE_COMMAND;
6
+ const START_MODES = /* @__PURE__ */ new Set([
7
+ "agent",
8
+ "bidi",
9
+ "realtime",
10
+ "transcribe"
11
+ ]);
12
+ function createGoogleMeetChromeNodeInvokePolicy(config) {
13
+ return createMeetingBrowserNodeInvokePolicy({
14
+ commandName: GOOGLE_MEET_CHROME_NODE_COMMAND,
15
+ displayName: "Google Meet",
16
+ deniedCode: "GOOGLE_MEET_NODE_POLICY_DENIED",
17
+ supportedModes: START_MODES,
18
+ normalizeUrl: (url) => GOOGLE_MEET_PLATFORM_ADAPTER.urls.validateAndNormalize(url),
19
+ useConfiguredSetupCommands: true,
20
+ start: config.chrome
21
+ });
22
+ }
23
+ //#endregion
24
+ export { GOOGLE_MEET_CHROME_NODE_COMMAND, createGoogleMeetChromeNodeInvokePolicy };
@@ -1,9 +1,8 @@
1
1
  import { n as readGoogleApiErrorDetail } from "./google-api-errors-CDUYkIcK.js";
2
+ import { MAX_DATE_TIMESTAMP_MS, resolveDateTimestampMs, resolveExpiresAtMsFromDurationSeconds } from "openclaw/plugin-sdk/number-runtime";
3
+ import { parseOAuthCallbackInput, waitForLocalOAuthCallback } from "openclaw/plugin-sdk/provider-auth-runtime";
2
4
  import { readProviderJsonResponse } from "openclaw/plugin-sdk/provider-http";
3
5
  import { fetchWithSsrFGuard } from "openclaw/plugin-sdk/ssrf-runtime";
4
- import { MAX_DATE_TIMESTAMP_MS, resolveDateTimestampMs, resolveExpiresAtMsFromDurationSeconds } from "openclaw/plugin-sdk/number-runtime";
5
- import { generateHexPkceVerifierChallenge } from "openclaw/plugin-sdk/provider-auth";
6
- import { generateOAuthState, parseOAuthCallbackInput, waitForLocalOAuthCallback } from "openclaw/plugin-sdk/provider-auth-runtime";
7
6
  //#region extensions/google-meet/src/oauth.ts
8
7
  const GOOGLE_MEET_REDIRECT_URI = "http://localhost:8085/oauth2callback";
9
8
  const GOOGLE_MEET_AUTH_URL = "https://accounts.google.com/o/oauth2/v2/auth";
@@ -119,16 +118,6 @@ async function resolveGoogleMeetAccessToken(params) {
119
118
  refreshed: true
120
119
  };
121
120
  }
122
- function createGoogleMeetPkce() {
123
- const { verifier, challenge } = generateHexPkceVerifierChallenge();
124
- return {
125
- verifier,
126
- challenge
127
- };
128
- }
129
- function createGoogleMeetOAuthState() {
130
- return generateOAuthState();
131
- }
132
121
  function isLocalCallbackListenerError(error) {
133
122
  if (!(error instanceof Error)) return false;
134
123
  return error.message.includes("EADDRINUSE") || error.message.includes("port") || error.message.includes("listen");
@@ -167,4 +156,4 @@ async function waitForGoogleMeetAuthCode(params) {
167
156
  }
168
157
  }
169
158
  //#endregion
170
- export { buildGoogleMeetAuthUrl, createGoogleMeetOAuthState, createGoogleMeetPkce, exchangeGoogleMeetAuthCode, resolveGoogleMeetAccessToken, waitForGoogleMeetAuthCode };
159
+ export { buildGoogleMeetAuthUrl, exchangeGoogleMeetAuthCode, resolveGoogleMeetAccessToken, waitForGoogleMeetAuthCode };