@openclaw/google-meet 2026.6.8 → 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.
- package/dist/{chrome-create-By4DuikO.js → chrome-create-DWEeDc7N.js} +2 -16
- package/dist/{cli-DURm3Y-K.js → cli-BnEq0tBJ.js} +4 -4
- package/dist/{config-Co24FcXM.js → config-D_YKxh0m.js} +1 -2
- package/dist/{create-BzkoPzD2.js → create-C7GxW7BL.js} +2 -2
- package/dist/google-api-errors-CDUYkIcK.js +17 -0
- package/dist/index.js +30 -49
- package/dist/{oauth--J53aI66.js → oauth-BzOU5Ztq.js} +2 -1
- package/npm-shrinkwrap.json +3 -3
- package/openclaw.plugin.json +4 -1
- package/package.json +4 -4
|
@@ -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 {
|
|
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 {
|
|
2
|
-
import {
|
|
3
|
-
import { buildGoogleMeetAuthUrl, createGoogleMeetOAuthState, createGoogleMeetPkce, exchangeGoogleMeetAuthCode, resolveGoogleMeetAccessToken, waitForGoogleMeetAuthCode } from "./oauth
|
|
4
|
-
import { hasCreateSpaceConfigInput, resolveCreateSpaceConfig } from "./create-
|
|
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 {
|
|
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-
|
|
2
|
-
import { resolveGoogleMeetAccessToken } from "./oauth
|
|
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
|
|
2
|
-
import { a as
|
|
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 !==
|
|
600
|
+
if (params.event.name !== REALTIME_VOICE_AGENT_CONSULT_TOOL_NAME) {
|
|
602
601
|
params.onTalkEvent?.({
|
|
603
602
|
type: "tool.error",
|
|
604
603
|
callId,
|
|
@@ -655,6 +654,24 @@ function handleGoogleMeetRealtimeConsultToolCall(params) {
|
|
|
655
654
|
}
|
|
656
655
|
//#endregion
|
|
657
656
|
//#region extensions/google-meet/src/realtime.ts
|
|
657
|
+
function terminateBridgeProcess(proc, signal = "SIGTERM") {
|
|
658
|
+
if (proc.killed && signal !== "SIGKILL") return;
|
|
659
|
+
let exited = false;
|
|
660
|
+
proc.on("exit", () => {
|
|
661
|
+
exited = true;
|
|
662
|
+
});
|
|
663
|
+
try {
|
|
664
|
+
proc.kill(signal);
|
|
665
|
+
} catch {
|
|
666
|
+
return;
|
|
667
|
+
}
|
|
668
|
+
if (signal === "SIGKILL") return;
|
|
669
|
+
setTimeout(() => {
|
|
670
|
+
if (!exited) try {
|
|
671
|
+
proc.kill("SIGKILL");
|
|
672
|
+
} catch {}
|
|
673
|
+
}, 1e3).unref?.();
|
|
674
|
+
}
|
|
658
675
|
const recordGoogleMeetRealtimeTranscript = recordRealtimeVoiceTranscript;
|
|
659
676
|
function getGoogleMeetRealtimeTranscriptHealth(transcript) {
|
|
660
677
|
return getRealtimeVoiceTranscriptHealth(transcript);
|
|
@@ -914,24 +931,6 @@ async function startCommandAgentAudioBridge(params) {
|
|
|
914
931
|
providerConfig: resolved.providerConfig,
|
|
915
932
|
audioFormat: params.config.chrome.audioFormat
|
|
916
933
|
}));
|
|
917
|
-
const terminateProcess = (proc, signal = "SIGTERM") => {
|
|
918
|
-
if (proc.killed && signal !== "SIGKILL") return;
|
|
919
|
-
let exited = false;
|
|
920
|
-
proc.on("exit", () => {
|
|
921
|
-
exited = true;
|
|
922
|
-
});
|
|
923
|
-
try {
|
|
924
|
-
proc.kill(signal);
|
|
925
|
-
} catch {
|
|
926
|
-
return;
|
|
927
|
-
}
|
|
928
|
-
if (signal === "SIGKILL") return;
|
|
929
|
-
setTimeout(() => {
|
|
930
|
-
if (!exited) try {
|
|
931
|
-
proc.kill("SIGKILL");
|
|
932
|
-
} catch {}
|
|
933
|
-
}, 1e3).unref?.();
|
|
934
|
-
};
|
|
935
934
|
const stop = async () => {
|
|
936
935
|
if (stopped) return;
|
|
937
936
|
stopped = true;
|
|
@@ -946,8 +945,8 @@ async function startCommandAgentAudioBridge(params) {
|
|
|
946
945
|
final: true,
|
|
947
946
|
payload: { meetingSessionId: params.meetingSessionId }
|
|
948
947
|
});
|
|
949
|
-
|
|
950
|
-
|
|
948
|
+
terminateBridgeProcess(inputProcess);
|
|
949
|
+
terminateBridgeProcess(outputProcess);
|
|
951
950
|
};
|
|
952
951
|
const fail = (label) => (error) => {
|
|
953
952
|
params.logger.warn(`[google-meet] ${label} failed: ${formatErrorMessage(error)}`);
|
|
@@ -1206,24 +1205,6 @@ async function startCommandRealtimeAudioBridge(params) {
|
|
|
1206
1205
|
suppressInputUntil = suppression.suppressInputUntilMs;
|
|
1207
1206
|
lastOutputPlayableUntilMs = suppression.lastOutputPlayableUntilMs;
|
|
1208
1207
|
};
|
|
1209
|
-
const terminateProcess = (proc, signal = "SIGTERM") => {
|
|
1210
|
-
if (proc.killed && signal !== "SIGKILL") return;
|
|
1211
|
-
let exited = false;
|
|
1212
|
-
proc.on("exit", () => {
|
|
1213
|
-
exited = true;
|
|
1214
|
-
});
|
|
1215
|
-
try {
|
|
1216
|
-
proc.kill(signal);
|
|
1217
|
-
} catch {
|
|
1218
|
-
return;
|
|
1219
|
-
}
|
|
1220
|
-
if (signal === "SIGKILL") return;
|
|
1221
|
-
setTimeout(() => {
|
|
1222
|
-
if (!exited) try {
|
|
1223
|
-
proc.kill("SIGKILL");
|
|
1224
|
-
} catch {}
|
|
1225
|
-
}, 1e3).unref?.();
|
|
1226
|
-
};
|
|
1227
1208
|
const stop = async () => {
|
|
1228
1209
|
if (stopped) return;
|
|
1229
1210
|
stopped = true;
|
|
@@ -1233,9 +1214,9 @@ async function startCommandRealtimeAudioBridge(params) {
|
|
|
1233
1214
|
} catch (error) {
|
|
1234
1215
|
params.logger.debug?.(`[google-meet] realtime voice bridge close ignored: ${formatErrorMessage(error)}`);
|
|
1235
1216
|
}
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
if (bargeInInputProcess)
|
|
1217
|
+
terminateBridgeProcess(inputProcess);
|
|
1218
|
+
terminateBridgeProcess(outputProcess);
|
|
1219
|
+
if (bargeInInputProcess) terminateBridgeProcess(bargeInInputProcess);
|
|
1239
1220
|
};
|
|
1240
1221
|
const fail = (label) => (error) => {
|
|
1241
1222
|
params.logger.warn(`[google-meet] ${label} failed: ${formatErrorMessage(error)}`);
|
|
@@ -1271,7 +1252,7 @@ async function startCommandRealtimeAudioBridge(params) {
|
|
|
1271
1252
|
suppressInputUntil = 0;
|
|
1272
1253
|
lastOutputPlayableUntilMs = 0;
|
|
1273
1254
|
params.logger.debug?.(`[google-meet] cleared realtime audio output buffer by restarting playback command`);
|
|
1274
|
-
|
|
1255
|
+
terminateBridgeProcess(previousOutput, "SIGKILL");
|
|
1275
1256
|
};
|
|
1276
1257
|
const writeOutputAudio = (audio) => {
|
|
1277
1258
|
try {
|
|
@@ -3744,11 +3725,11 @@ var GoogleMeetRuntime = class {
|
|
|
3744
3725
|
let googleMeetCreateModulePromise = null;
|
|
3745
3726
|
let googleMeetCliModulePromise = null;
|
|
3746
3727
|
const loadGoogleMeetCreateModule = async () => {
|
|
3747
|
-
googleMeetCreateModulePromise ??= import("./create-
|
|
3728
|
+
googleMeetCreateModulePromise ??= import("./create-C7GxW7BL.js");
|
|
3748
3729
|
return await googleMeetCreateModulePromise;
|
|
3749
3730
|
};
|
|
3750
3731
|
const loadGoogleMeetCliModule = async () => {
|
|
3751
|
-
googleMeetCliModulePromise ??= import("./cli-
|
|
3732
|
+
googleMeetCliModulePromise ??= import("./cli-BnEq0tBJ.js");
|
|
3752
3733
|
return await googleMeetCliModulePromise;
|
|
3753
3734
|
};
|
|
3754
3735
|
const googleMeetConfigSchema = {
|
|
@@ -4121,7 +4102,7 @@ async function createAndJoinMeetFromParams(params) {
|
|
|
4121
4102
|
return (await loadGoogleMeetCreateModule()).createAndJoinMeetFromParams(params);
|
|
4122
4103
|
}
|
|
4123
4104
|
async function resolveGoogleMeetTokenFromParams(config, raw) {
|
|
4124
|
-
const { resolveGoogleMeetAccessToken } = await import("./oauth
|
|
4105
|
+
const { resolveGoogleMeetAccessToken } = await import("./oauth-BzOU5Ztq.js");
|
|
4125
4106
|
return resolveGoogleMeetAccessToken({
|
|
4126
4107
|
clientId: normalizeOptionalString(raw.clientId) ?? config.oauth.clientId,
|
|
4127
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
|
|
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();
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/google-meet",
|
|
3
|
-
"version": "2026.6.
|
|
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
|
+
"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.
|
|
15
|
+
"openclaw": ">=2026.6.9"
|
|
16
16
|
},
|
|
17
17
|
"peerDependenciesMeta": {
|
|
18
18
|
"openclaw": {
|
package/openclaw.plugin.json
CHANGED
|
@@ -527,6 +527,9 @@
|
|
|
527
527
|
}
|
|
528
528
|
},
|
|
529
529
|
"configContracts": {
|
|
530
|
-
"compatibilityMigrationPaths": ["plugins.entries.google-meet.config.realtime.provider"]
|
|
530
|
+
"compatibilityMigrationPaths": ["plugins.entries.google-meet.config.realtime.provider"],
|
|
531
|
+
"secretInputs": {
|
|
532
|
+
"paths": [{ "path": "realtime.providers.*.apiKey", "expected": "string" }]
|
|
533
|
+
}
|
|
531
534
|
}
|
|
532
535
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/google-meet",
|
|
3
|
-
"version": "2026.6.
|
|
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.
|
|
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.
|
|
32
|
+
"pluginApi": ">=2026.6.9"
|
|
33
33
|
},
|
|
34
34
|
"build": {
|
|
35
|
-
"openclawVersion": "2026.6.
|
|
35
|
+
"openclawVersion": "2026.6.9"
|
|
36
36
|
},
|
|
37
37
|
"release": {
|
|
38
38
|
"publishToClawHub": true,
|