diff --git a/.openclaw-sync/source.json b/.openclaw-sync/source.json index dea05a423..e1f7b0bc7 100644 --- a/.openclaw-sync/source.json +++ b/.openclaw-sync/source.json @@ -1,5 +1,5 @@ { "repository": "openclaw/openclaw", - "sha": "53c42171100db95ea35750b791b0264f7b026853", - "syncedAt": "2026-05-02T07:04:43.966Z" + "sha": "493857c6a80dc8457fc418c521cb808c93b3a98b", + "syncedAt": "2026-05-02T07:05:13.110Z" } diff --git a/docs/plugins/google-meet.md b/docs/plugins/google-meet.md index 45849e3c7..4846b371b 100644 --- a/docs/plugins/google-meet.md +++ b/docs/plugins/google-meet.md @@ -125,6 +125,24 @@ Create a new meeting and join it: openclaw googlemeet create --transport chrome-node --mode realtime ``` +For API-created rooms, use Google Meet `SpaceConfig.accessType` when you want +the room's no-knock policy to be explicit instead of inherited from the Google +account defaults: + +```bash +openclaw googlemeet create --access-type OPEN --transport chrome-node --mode realtime +``` + +`OPEN` lets anyone with the Meet URL join without knocking. `TRUSTED` lets the +host organization's trusted users, invited external users, and dial-in users +join without knocking. `RESTRICTED` limits no-knock entry to invitees. These +settings only apply to the official Google Meet API creation path, so OAuth +credentials must be configured. + +If you authenticated Google Meet before this option was available, rerun +`openclaw googlemeet auth login --json` after adding the +`meetings.space.settings` scope to your Google OAuth consent screen. + Create only the URL without joining: ```bash @@ -175,6 +193,10 @@ a best-effort Meet caption observer. `googlemeet status --json` and `transcriptLines`, `lastCaptionAt`, `lastCaptionSpeaker`, `lastCaptionText`, and a short `recentTranscript` tail so operators can tell whether the browser joined the call and whether Meet captions are producing text. +Use `openclaw googlemeet test-listen --transport chrome-node` when +you need a yes/no probe: it joins in transcribe mode, waits for fresh caption or +transcript movement, and returns `listenVerified`, `listenTimedOut`, manual +action fields, and the latest caption health. During realtime sessions, `google_meet` status includes browser and audio bridge health such as `inCall`, `manualActionRequired`, `providerConnected`, @@ -504,6 +526,7 @@ In Google Cloud Console: 4. Add the scopes OpenClaw requests: - `https://www.googleapis.com/auth/meetings.space.created` - `https://www.googleapis.com/auth/meetings.space.readonly` + - `https://www.googleapis.com/auth/meetings.space.settings` - `https://www.googleapis.com/auth/meetings.conference.media.readonly` 5. Create an OAuth client ID. - Application type: **Web application**. @@ -517,6 +540,8 @@ In Google Cloud Console: `meetings.space.created` is required by Google Meet `spaces.create`. `meetings.space.readonly` lets OpenClaw resolve Meet URLs/codes to spaces. +`meetings.space.settings` lets OpenClaw pass `SpaceConfig` settings such as +`accessType` during API room creation. `meetings.conference.media.readonly` is for Meet Media API preflight and media work; Google may require Developer Preview enrollment for actual Media API use. If you only need browser-based Chrome joins, skip OAuth entirely. @@ -708,6 +733,21 @@ openclaw googlemeet artifacts --conference-record conferenceRecords/abc123 --jso openclaw googlemeet attendance --conference-record conferenceRecords/abc123 --json ``` +End an active conference for an API-created space when you want to close the +room after the call: + +```bash +openclaw googlemeet end-active-conference https://meet.google.com/abc-defg-hij +``` + +This calls Google Meet `spaces.endActiveConference` and requires OAuth with the +`meetings.space.created` scope for a space the authorized account can manage. +OpenClaw accepts a Meet URL, meeting code, or `spaces/{id}` input and resolves it +to the API space resource before ending the active conference. +It is separate from `googlemeet leave`: `leave` stops OpenClaw's local/session +participation, while `end-active-conference` asks Google Meet to end the active +conference for the space. + Write a readable report: ```bash @@ -764,6 +804,38 @@ Agents can also create the same bundle through the `google_meet` tool: Set `"dryRun": true` to return only the export manifest and skip file writes. +Agents can also create an API-backed room with an explicit access policy: + +```json +{ + "action": "create", + "transport": "chrome-node", + "mode": "realtime", + "accessType": "OPEN" +} +``` + +And they can end the active conference for a known room: + +```json +{ + "action": "end_active_conference", + "meeting": "https://meet.google.com/abc-defg-hij" +} +``` + +For listen-first validation, agents should use `test_listen` before claiming the +meeting is useful: + +```json +{ + "action": "test_listen", + "url": "https://meet.google.com/abc-defg-hij", + "transport": "chrome-node", + "timeoutMs": 30000 +} +``` + Run the guarded live smoke against a real retained meeting: ```bash @@ -772,6 +844,14 @@ OPENCLAW_GOOGLE_MEET_LIVE_MEETING=https://meet.google.com/abc-defg-hij \ pnpm test:live -- extensions/google-meet/google-meet.live.test.ts ``` +Run the live listen-first browser probe against a meeting where someone will +speak with Meet captions available: + +```bash +openclaw googlemeet setup --transport chrome-node --mode transcribe +openclaw googlemeet test-listen https://meet.google.com/abc-defg-hij --transport chrome-node --timeout-ms 30000 +``` + Live smoke environment: - `OPENCLAW_LIVE_TEST=1` enables guarded live tests. @@ -1241,7 +1321,8 @@ openclaw nodes status --connected ### Browser opens but agent cannot join -Run `googlemeet test-speech` and inspect the returned Chrome health. If it +Run `googlemeet test-listen` for observe-only joins or `googlemeet test-speech` +for realtime joins, then inspect the returned Chrome health. If either probe reports `manualActionRequired: true`, show `manualActionMessage` to the operator and stop retrying until the browser action is complete. @@ -1502,6 +1583,8 @@ argument list, and do not point it at scripts from untrusted locations. `googlemeet speak` triggers the active realtime audio bridge for a Chrome session. `googlemeet leave` stops that bridge. For Twilio sessions delegated through the Voice Call plugin, `leave` also hangs up the underlying voice call. +Use `googlemeet end-active-conference` when you also want to close the active +Google Meet conference for an API-managed space. ## Related