@openclaw/google-meet 2026.7.2-beta.4 → 2026.7.2-beta.7
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-DkWXFsK2.js → chrome-create-DMKruRFW.js} +18 -17
- package/dist/{cli-CksOXL4n.js → cli-DCcRyaMf.js} +8 -18
- package/dist/cli-metadata.js +13 -0
- package/dist/cli-output-mode-BwH_6tH8.js +28 -0
- package/dist/{create-CNAkrEju.js → create-af1MDlus.js} +1 -1
- package/dist/index.js +68 -264
- package/package.json +4 -5
- package/npm-shrinkwrap.json +0 -157
- /package/node_modules/{core-util-is → jszip/node_modules/core-util-is}/LICENSE +0 -0
- /package/node_modules/{core-util-is → jszip/node_modules/core-util-is}/README.md +0 -0
- /package/node_modules/{core-util-is → jszip/node_modules/core-util-is}/lib/util.js +0 -0
- /package/node_modules/{core-util-is → jszip/node_modules/core-util-is}/package.json +0 -0
- /package/node_modules/{immediate → jszip/node_modules/immediate}/LICENSE.txt +0 -0
- /package/node_modules/{immediate → jszip/node_modules/immediate}/README.md +0 -0
- /package/node_modules/{immediate → jszip/node_modules/immediate}/dist/immediate.js +0 -0
- /package/node_modules/{immediate → jszip/node_modules/immediate}/dist/immediate.min.js +0 -0
- /package/node_modules/{immediate → jszip/node_modules/immediate}/lib/browser.js +0 -0
- /package/node_modules/{immediate → jszip/node_modules/immediate}/lib/index.js +0 -0
- /package/node_modules/{immediate → jszip/node_modules/immediate}/package.json +0 -0
- /package/node_modules/{inherits → jszip/node_modules/inherits}/LICENSE +0 -0
- /package/node_modules/{inherits → jszip/node_modules/inherits}/README.md +0 -0
- /package/node_modules/{inherits → jszip/node_modules/inherits}/inherits.js +0 -0
- /package/node_modules/{inherits → jszip/node_modules/inherits}/inherits_browser.js +0 -0
- /package/node_modules/{inherits → jszip/node_modules/inherits}/package.json +0 -0
- /package/node_modules/{isarray → jszip/node_modules/isarray}/.npmignore +0 -0
- /package/node_modules/{isarray → jszip/node_modules/isarray}/.travis.yml +0 -0
- /package/node_modules/{isarray → jszip/node_modules/isarray}/Makefile +0 -0
- /package/node_modules/{isarray → jszip/node_modules/isarray}/README.md +0 -0
- /package/node_modules/{isarray → jszip/node_modules/isarray}/component.json +0 -0
- /package/node_modules/{isarray → jszip/node_modules/isarray}/index.js +0 -0
- /package/node_modules/{isarray → jszip/node_modules/isarray}/package.json +0 -0
- /package/node_modules/{isarray → jszip/node_modules/isarray}/test.js +0 -0
- /package/node_modules/{lie → jszip/node_modules/lie}/README.md +0 -0
- /package/node_modules/{lie → jszip/node_modules/lie}/dist/lie.js +0 -0
- /package/node_modules/{lie → jszip/node_modules/lie}/dist/lie.min.js +0 -0
- /package/node_modules/{lie → jszip/node_modules/lie}/dist/lie.polyfill.js +0 -0
- /package/node_modules/{lie → jszip/node_modules/lie}/dist/lie.polyfill.min.js +0 -0
- /package/node_modules/{lie → jszip/node_modules/lie}/lib/browser.js +0 -0
- /package/node_modules/{lie → jszip/node_modules/lie}/lib/index.js +0 -0
- /package/node_modules/{lie → jszip/node_modules/lie}/license.md +0 -0
- /package/node_modules/{lie → jszip/node_modules/lie}/lie.d.ts +0 -0
- /package/node_modules/{lie → jszip/node_modules/lie}/package.json +0 -0
- /package/node_modules/{lie → jszip/node_modules/lie}/polyfill.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/CHANGELOG.md +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/LICENSE +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/README.md +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/dist/pako.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/dist/pako.min.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/dist/pako_deflate.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/dist/pako_deflate.min.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/dist/pako_inflate.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/dist/pako_inflate.min.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/index.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/lib/deflate.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/lib/inflate.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/lib/utils/common.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/lib/utils/strings.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/README +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/adler32.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/constants.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/crc32.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/deflate.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/gzheader.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/inffast.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/inflate.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/inftrees.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/messages.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/trees.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/zstream.js +0 -0
- /package/node_modules/{pako → jszip/node_modules/pako}/package.json +0 -0
- /package/node_modules/{process-nextick-args → jszip/node_modules/process-nextick-args}/index.js +0 -0
- /package/node_modules/{process-nextick-args → jszip/node_modules/process-nextick-args}/license.md +0 -0
- /package/node_modules/{process-nextick-args → jszip/node_modules/process-nextick-args}/package.json +0 -0
- /package/node_modules/{process-nextick-args → jszip/node_modules/process-nextick-args}/readme.md +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/.travis.yml +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/CONTRIBUTING.md +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/GOVERNANCE.md +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/LICENSE +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/README.md +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/doc/wg-meetings/2015-01-30.md +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/duplex-browser.js +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/duplex.js +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/lib/_stream_duplex.js +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/lib/_stream_passthrough.js +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/lib/_stream_readable.js +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/lib/_stream_transform.js +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/lib/_stream_writable.js +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/lib/internal/streams/BufferList.js +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/lib/internal/streams/destroy.js +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/lib/internal/streams/stream-browser.js +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/lib/internal/streams/stream.js +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/package.json +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/passthrough.js +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/readable-browser.js +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/readable.js +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/transform.js +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/writable-browser.js +0 -0
- /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/writable.js +0 -0
- /package/node_modules/{safe-buffer → jszip/node_modules/safe-buffer}/LICENSE +0 -0
- /package/node_modules/{safe-buffer → jszip/node_modules/safe-buffer}/README.md +0 -0
- /package/node_modules/{safe-buffer → jszip/node_modules/safe-buffer}/index.d.ts +0 -0
- /package/node_modules/{safe-buffer → jszip/node_modules/safe-buffer}/index.js +0 -0
- /package/node_modules/{safe-buffer → jszip/node_modules/safe-buffer}/package.json +0 -0
- /package/node_modules/{setimmediate → jszip/node_modules/setimmediate}/LICENSE.txt +0 -0
- /package/node_modules/{setimmediate → jszip/node_modules/setimmediate}/package.json +0 -0
- /package/node_modules/{setimmediate → jszip/node_modules/setimmediate}/setImmediate.js +0 -0
- /package/node_modules/{string_decoder → jszip/node_modules/string_decoder}/.travis.yml +0 -0
- /package/node_modules/{string_decoder → jszip/node_modules/string_decoder}/LICENSE +0 -0
- /package/node_modules/{string_decoder → jszip/node_modules/string_decoder}/README.md +0 -0
- /package/node_modules/{string_decoder → jszip/node_modules/string_decoder}/lib/string_decoder.js +0 -0
- /package/node_modules/{string_decoder → jszip/node_modules/string_decoder}/package.json +0 -0
- /package/node_modules/{util-deprecate → jszip/node_modules/util-deprecate}/History.md +0 -0
- /package/node_modules/{util-deprecate → jszip/node_modules/util-deprecate}/LICENSE +0 -0
- /package/node_modules/{util-deprecate → jszip/node_modules/util-deprecate}/README.md +0 -0
- /package/node_modules/{util-deprecate → jszip/node_modules/util-deprecate}/browser.js +0 -0
- /package/node_modules/{util-deprecate → jszip/node_modules/util-deprecate}/node.js +0 -0
- /package/node_modules/{util-deprecate → jszip/node_modules/util-deprecate}/package.json +0 -0
- /package/node_modules/{parse-ms → pretty-ms/node_modules/parse-ms}/index.d.ts +0 -0
- /package/node_modules/{parse-ms → pretty-ms/node_modules/parse-ms}/index.js +0 -0
- /package/node_modules/{parse-ms → pretty-ms/node_modules/parse-ms}/license +0 -0
- /package/node_modules/{parse-ms → pretty-ms/node_modules/parse-ms}/package.json +0 -0
- /package/node_modules/{parse-ms → pretty-ms/node_modules/parse-ms}/readme.md +0 -0
|
@@ -687,8 +687,7 @@ const GOOGLE_MEET_BROWSER_NAVIGATION_RETRY_MS = 1e3;
|
|
|
687
687
|
const GOOGLE_MEET_BROWSER_POLL_MS = 500;
|
|
688
688
|
var GoogleMeetBrowserManualActionError = class extends Error {
|
|
689
689
|
constructor(payload) {
|
|
690
|
-
|
|
691
|
-
super(`${prefix}${payload.manualActionMessage}`);
|
|
690
|
+
super(`${payload.manualAction.reason}: ${payload.manualAction.message}`);
|
|
692
691
|
this.name = "GoogleMeetBrowserManualActionError";
|
|
693
692
|
this.payload = {
|
|
694
693
|
source: "browser",
|
|
@@ -738,6 +737,14 @@ async function focusBrowserTab(params) {
|
|
|
738
737
|
function readStringArray(value) {
|
|
739
738
|
return Array.isArray(value) ? value.filter((entry) => typeof entry === "string") : void 0;
|
|
740
739
|
}
|
|
740
|
+
function readBrowserManualAction(value) {
|
|
741
|
+
if (!value || typeof value !== "object") return;
|
|
742
|
+
const action = value;
|
|
743
|
+
return typeof action.reason === "string" && typeof action.message === "string" ? {
|
|
744
|
+
reason: action.reason,
|
|
745
|
+
message: action.message
|
|
746
|
+
} : void 0;
|
|
747
|
+
}
|
|
741
748
|
function readBrowserCreateResult(result) {
|
|
742
749
|
const record = result && typeof result === "object" ? result : {};
|
|
743
750
|
const nested = record.result && typeof record.result === "object" ? record.result : record;
|
|
@@ -745,8 +752,7 @@ function readBrowserCreateResult(result) {
|
|
|
745
752
|
meetingUri: typeof nested.meetingUri === "string" ? nested.meetingUri : void 0,
|
|
746
753
|
browserUrl: typeof nested.browserUrl === "string" ? nested.browserUrl : void 0,
|
|
747
754
|
browserTitle: typeof nested.browserTitle === "string" ? nested.browserTitle : void 0,
|
|
748
|
-
manualAction:
|
|
749
|
-
manualActionReason: typeof nested.manualActionReason === "string" ? nested.manualActionReason : void 0,
|
|
755
|
+
manualAction: readBrowserManualAction(nested.manualAction),
|
|
750
756
|
notes: readStringArray(nested.notes),
|
|
751
757
|
retryAfterMs: typeof nested.retryAfterMs === "number" && Number.isFinite(nested.retryAfterMs) ? nested.retryAfterMs : void 0
|
|
752
758
|
};
|
|
@@ -755,6 +761,7 @@ const CREATE_MEET_FROM_BROWSER_SCRIPT = `async () => {
|
|
|
755
761
|
const meetUrlPattern = /^https:\\/\\/meet\\.google\\.com\\/[a-z]{3}-[a-z]{4}-[a-z]{3}(?:$|[/?#])/i;
|
|
756
762
|
const text = (node) => (node?.innerText || node?.textContent || "").trim();
|
|
757
763
|
const current = () => location.href;
|
|
764
|
+
const manualActionFor = (reason, message) => ({ reason, message });
|
|
758
765
|
const notes = [];
|
|
759
766
|
const findButton = (pattern) =>
|
|
760
767
|
[...document.querySelectorAll("button")].find((button) => {
|
|
@@ -778,8 +785,7 @@ const CREATE_MEET_FROM_BROWSER_SCRIPT = `async () => {
|
|
|
778
785
|
};
|
|
779
786
|
if (!current().startsWith("https://meet.google.com/")) {
|
|
780
787
|
return {
|
|
781
|
-
|
|
782
|
-
manualAction: "Sign in to Google in the OpenClaw browser profile, then retry meeting creation.",
|
|
788
|
+
manualAction: manualActionFor("google-login-required", "Sign in to Google in the OpenClaw browser profile, then retry meeting creation."),
|
|
783
789
|
browserUrl: current(),
|
|
784
790
|
browserTitle: document.title,
|
|
785
791
|
notes,
|
|
@@ -805,8 +811,7 @@ const CREATE_MEET_FROM_BROWSER_SCRIPT = `async () => {
|
|
|
805
811
|
}
|
|
806
812
|
if (/do you want people to hear you in the meeting/i.test(pageText)) {
|
|
807
813
|
return {
|
|
808
|
-
|
|
809
|
-
manualAction: "Meet is showing the microphone choice. Click Use microphone in the OpenClaw browser profile, then retry meeting creation.",
|
|
814
|
+
manualAction: manualActionFor("meet-audio-choice-required", "Meet is showing the microphone choice. Click Use microphone in the OpenClaw browser profile, then retry meeting creation."),
|
|
810
815
|
browserUrl: href,
|
|
811
816
|
browserTitle: document.title,
|
|
812
817
|
notes,
|
|
@@ -814,8 +819,7 @@ const CREATE_MEET_FROM_BROWSER_SCRIPT = `async () => {
|
|
|
814
819
|
}
|
|
815
820
|
if (/allow.*(microphone|camera)|blocked.*(microphone|camera)|permission.*(microphone|camera)/i.test(pageText)) {
|
|
816
821
|
return {
|
|
817
|
-
|
|
818
|
-
manualAction: "Allow microphone/camera permissions for Meet in the OpenClaw browser profile, then retry meeting creation.",
|
|
822
|
+
manualAction: manualActionFor("meet-permission-required", "Allow microphone/camera permissions for Meet in the OpenClaw browser profile, then retry meeting creation."),
|
|
819
823
|
browserUrl: href,
|
|
820
824
|
browserTitle: document.title,
|
|
821
825
|
notes,
|
|
@@ -823,7 +827,7 @@ const CREATE_MEET_FROM_BROWSER_SCRIPT = `async () => {
|
|
|
823
827
|
}
|
|
824
828
|
if (/couldn't create|unable to create/i.test(pageText)) {
|
|
825
829
|
return {
|
|
826
|
-
manualAction: "Resolve the Google Meet page prompt in the OpenClaw browser profile, then retry meeting creation.",
|
|
830
|
+
manualAction: manualActionFor("browser-control-unavailable", "Resolve the Google Meet page prompt in the OpenClaw browser profile, then retry meeting creation."),
|
|
827
831
|
browserUrl: href,
|
|
828
832
|
browserTitle: document.title,
|
|
829
833
|
notes,
|
|
@@ -831,8 +835,7 @@ const CREATE_MEET_FROM_BROWSER_SCRIPT = `async () => {
|
|
|
831
835
|
}
|
|
832
836
|
if (location.hostname.toLowerCase() === "accounts.google.com" || /use your google account|to continue to google meet|choose an account|sign in to (join|continue)/i.test(pageText)) {
|
|
833
837
|
return {
|
|
834
|
-
|
|
835
|
-
manualAction: "Sign in to Google in the OpenClaw browser profile, then retry meeting creation.",
|
|
838
|
+
manualAction: manualActionFor("google-login-required", "Sign in to Google in the OpenClaw browser profile, then retry meeting creation."),
|
|
836
839
|
browserUrl: href,
|
|
837
840
|
browserTitle: document.title,
|
|
838
841
|
notes,
|
|
@@ -921,9 +924,7 @@ async function createMeetWithBrowserProxyOnNode(params) {
|
|
|
921
924
|
notes: [...notes]
|
|
922
925
|
};
|
|
923
926
|
if (result.manualAction) throw new GoogleMeetBrowserManualActionError({
|
|
924
|
-
|
|
925
|
-
manualActionReason: result.manualActionReason,
|
|
926
|
-
manualActionMessage: result.manualAction,
|
|
927
|
+
manualAction: result.manualAction,
|
|
927
928
|
browser: {
|
|
928
929
|
nodeId,
|
|
929
930
|
targetId,
|
|
@@ -938,7 +939,7 @@ async function createMeetWithBrowserProxyOnNode(params) {
|
|
|
938
939
|
if (!isBrowserNavigationInterruption(error)) throw error;
|
|
939
940
|
await sleep(GOOGLE_MEET_BROWSER_NAVIGATION_RETRY_MS);
|
|
940
941
|
}
|
|
941
|
-
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)}` : ""}`);
|
|
942
|
+
throw new Error(lastResult?.manualAction?.message ?? `Google Meet did not return a meeting URL from the browser create flow before timeout.${lastError ? ` Last browser automation error: ${formatBrowserAutomationError(lastError)}` : ""}`);
|
|
942
943
|
}
|
|
943
944
|
//#endregion
|
|
944
945
|
export { endGoogleMeetActiveConference as _, isRecoverableMeetTab as a, readMeetAuthUser as c, resolveChromeNodeInfo as d, GOOGLE_MEET_NODE_COMMAND as f, createGoogleMeetSpace as g, fetchGoogleMeetAttendance as h, isEnglishMeetTab as i, callBrowserProxyOnNode as l, fetchGoogleMeetArtifacts as m, isGoogleMeetBrowserManualActionError as n, isSameMeetUrlForReuse as o, buildGoogleMeetPreflightReport as p, forceMeetEnglishUi as r, normalizeMeetUrlForReuse as s, createMeetWithBrowserProxyOnNode as t, resolveChromeNode as u, fetchGoogleMeetSpace as v, fetchLatestGoogleMeetConferenceRecord as y };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { n as hasCreateSpaceConfigInput, r as resolveCreateSpaceConfig } from "./create-
|
|
1
|
+
import { n as hasCreateSpaceConfigInput, r as resolveCreateSpaceConfig } from "./create-af1MDlus.js";
|
|
2
2
|
import { a as buildGoogleMeetCalendarDayWindow, i as resolveGoogleMeetGatewayOperationTimeoutMs, o as findGoogleMeetCalendarEvent, s as listGoogleMeetCalendarEvents } from "./config-BcaS1BDr.js";
|
|
3
|
-
import { _ as endGoogleMeetActiveConference, g as createGoogleMeetSpace, h as fetchGoogleMeetAttendance, m as fetchGoogleMeetArtifacts, p as buildGoogleMeetPreflightReport, v as fetchGoogleMeetSpace, y as fetchLatestGoogleMeetConferenceRecord } from "./chrome-create-
|
|
3
|
+
import { _ as endGoogleMeetActiveConference, g as createGoogleMeetSpace, h as fetchGoogleMeetAttendance, m as fetchGoogleMeetArtifacts, p as buildGoogleMeetPreflightReport, v as fetchGoogleMeetSpace, y as fetchLatestGoogleMeetConferenceRecord } from "./chrome-create-DMKruRFW.js";
|
|
4
4
|
import { buildGoogleMeetAuthUrl, createGoogleMeetOAuthState, createGoogleMeetPkce, exchangeGoogleMeetAuthCode, resolveGoogleMeetAccessToken, waitForGoogleMeetAuthCode } from "./oauth-DOfMKlGp.js";
|
|
5
5
|
import { callGatewayFromCli } from "openclaw/plugin-sdk/gateway-runtime";
|
|
6
6
|
import { clampTimerTimeoutMs, parseStrictNonNegativeInteger, parseStrictPositiveInteger } from "openclaw/plugin-sdk/number-runtime";
|
|
@@ -143,10 +143,10 @@ function writeDoctorStatus(status) {
|
|
|
143
143
|
writeStdoutLine("captioning: %s", formatBoolean(health?.captioning));
|
|
144
144
|
writeStdoutLine("transcript lines: %s", health?.transcriptLines ?? 0);
|
|
145
145
|
writeStdoutLine("last caption: %s", formatOptional(health?.lastCaptionAt));
|
|
146
|
-
writeStdoutLine("manual action: %s", formatBoolean(health?.
|
|
147
|
-
if (health?.
|
|
148
|
-
writeStdoutLine("manual reason: %s", formatOptional(health.
|
|
149
|
-
writeStdoutLine("manual message: %s", formatOptional(health.
|
|
146
|
+
writeStdoutLine("manual action: %s", formatBoolean(Boolean(health?.manualAction)));
|
|
147
|
+
if (health?.manualAction) {
|
|
148
|
+
writeStdoutLine("manual reason: %s", formatOptional(health.manualAction.reason));
|
|
149
|
+
writeStdoutLine("manual message: %s", formatOptional(health.manualAction.message));
|
|
150
150
|
}
|
|
151
151
|
writeStdoutLine("speech ready: %s", formatBoolean(health?.speechReady));
|
|
152
152
|
if (health?.speechReady === false) {
|
|
@@ -1067,7 +1067,7 @@ function registerGoogleMeetLifecycleCommands(context) {
|
|
|
1067
1067
|
//#region extensions/google-meet/src/cli-space-commands.ts
|
|
1068
1068
|
function registerGoogleMeetCreateCommands(context) {
|
|
1069
1069
|
const params = context;
|
|
1070
|
-
const { root, callGateway, operationTimeoutMs, hasCreateOAuth,
|
|
1070
|
+
const { root, callGateway, operationTimeoutMs, hasCreateOAuth, resolveMeetingInput, resolveOAuthTokenOptions } = context;
|
|
1071
1071
|
root.command("create").description("Create a new Google Meet space and print its meeting URL").option("--access-token <token>", "Access token override").option("--refresh-token <token>", "Refresh token override").option("--client-id <id>", "OAuth client id override").option("--client-secret <secret>", "OAuth client secret override").option("--expires-at <ms>", "Cached access token expiry as unix epoch milliseconds").option("--access-type <type>", "Google Meet SpaceConfig accessType for API create: OPEN, TRUSTED, or RESTRICTED").option("--entry-point-access <type>", "Google Meet SpaceConfig entryPointAccess for API create: ALL or CREATOR_APP_ONLY").option("--no-join", "Only create the meeting URL; do not join it").option("--transport <transport>", "Join transport: chrome, chrome-node, or twilio").option("--mode <mode>", "Join mode: agent, bidi, or transcribe").option("--message <text>", "Realtime speech to trigger after join").option("--dial-in-number <phone>", "Meet dial-in number for Twilio transport").option("--pin <pin>", "Meet phone PIN; # is appended if omitted").option("--dtmf-sequence <sequence>", "Explicit Twilio DTMF sequence").option("--json", "Print JSON output", false).action(async (options) => {
|
|
1072
1072
|
if (options.join !== false) {
|
|
1073
1073
|
const delegated = await callGoogleMeetGateway({
|
|
@@ -1129,7 +1129,7 @@ function registerGoogleMeetCreateCommands(context) {
|
|
|
1129
1129
|
else writeStdoutLine("joined: no (run `openclaw googlemeet join %s`)", result.meetingUri);
|
|
1130
1130
|
return;
|
|
1131
1131
|
}
|
|
1132
|
-
const token = await resolveGoogleMeetAccessToken(
|
|
1132
|
+
const token = await resolveGoogleMeetAccessToken(resolveOAuthTokenOptions(params.config, options));
|
|
1133
1133
|
const result = await createGoogleMeetSpace({
|
|
1134
1134
|
accessToken: token.accessToken,
|
|
1135
1135
|
config: resolveCreateSpaceConfig(options)
|
|
@@ -1328,15 +1328,6 @@ async function resolveMeetingForToken(params) {
|
|
|
1328
1328
|
calendarEvent: calendarMeeting.calendarEvent
|
|
1329
1329
|
} : { meeting };
|
|
1330
1330
|
}
|
|
1331
|
-
function resolveCreateTokenOptions(config, options) {
|
|
1332
|
-
return {
|
|
1333
|
-
clientId: options.clientId?.trim() || config.oauth.clientId,
|
|
1334
|
-
clientSecret: options.clientSecret?.trim() || config.oauth.clientSecret,
|
|
1335
|
-
refreshToken: options.refreshToken?.trim() || config.oauth.refreshToken,
|
|
1336
|
-
accessToken: options.accessToken?.trim() || config.oauth.accessToken,
|
|
1337
|
-
expiresAt: parseOptionalNumber(options.expiresAt) ?? config.oauth.expiresAt
|
|
1338
|
-
};
|
|
1339
|
-
}
|
|
1340
1331
|
function resolveArtifactTokenOptions(config, options) {
|
|
1341
1332
|
const meeting = options.meeting?.trim() || config.defaults.meeting;
|
|
1342
1333
|
const conferenceRecord = options.conferenceRecord?.trim();
|
|
@@ -1414,7 +1405,6 @@ function registerGoogleMeetCli(params) {
|
|
|
1414
1405
|
resolveOAuthTokenOptions,
|
|
1415
1406
|
resolveTokenOptions,
|
|
1416
1407
|
resolveMeetingForToken,
|
|
1417
|
-
resolveCreateTokenOptions,
|
|
1418
1408
|
resolveArtifactTokenOptions,
|
|
1419
1409
|
hasCreateOAuth
|
|
1420
1410
|
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { t as GOOGLE_MEET_CLI_DESCRIPTOR } from "./cli-output-mode-BwH_6tH8.js";
|
|
2
|
+
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
|
|
3
|
+
//#region extensions/google-meet/cli-metadata.ts
|
|
4
|
+
var cli_metadata_default = definePluginEntry({
|
|
5
|
+
id: "google-meet",
|
|
6
|
+
name: "Google Meet",
|
|
7
|
+
description: "Google Meet CLI metadata",
|
|
8
|
+
register(api) {
|
|
9
|
+
api.registerCli(() => {}, { descriptors: [GOOGLE_MEET_CLI_DESCRIPTOR] });
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
//#endregion
|
|
13
|
+
export { cli_metadata_default as default };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { getRootOptionAwareCommandPath } from "openclaw/plugin-sdk/cli-argv";
|
|
2
|
+
//#region extensions/google-meet/src/cli-output-mode.ts
|
|
3
|
+
const DEFAULT_JSON_COMMANDS = /* @__PURE__ */ new Set([
|
|
4
|
+
"join",
|
|
5
|
+
"status",
|
|
6
|
+
"test-listen",
|
|
7
|
+
"test-speech"
|
|
8
|
+
]);
|
|
9
|
+
function hasOption(argv, flag) {
|
|
10
|
+
for (const arg of argv.slice(2)) {
|
|
11
|
+
if (arg === "--") return false;
|
|
12
|
+
if (arg === flag || arg.startsWith(`${flag}=`)) return true;
|
|
13
|
+
}
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
/** Runtime probe commands emit JSON without requiring the shared `--json` option. */
|
|
17
|
+
function isGoogleMeetMachineOutput(params) {
|
|
18
|
+
const [, command] = getRootOptionAwareCommandPath(params.argv, 2);
|
|
19
|
+
return DEFAULT_JSON_COMMANDS.has(command ?? "") || command === "export" && hasOption(params.argv, "--dry-run");
|
|
20
|
+
}
|
|
21
|
+
const GOOGLE_MEET_CLI_DESCRIPTOR = {
|
|
22
|
+
name: "googlemeet",
|
|
23
|
+
description: "Join and manage Google Meet calls",
|
|
24
|
+
hasSubcommands: true,
|
|
25
|
+
machineOutput: isGoogleMeetMachineOutput
|
|
26
|
+
};
|
|
27
|
+
//#endregion
|
|
28
|
+
export { GOOGLE_MEET_CLI_DESCRIPTOR as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { g as createGoogleMeetSpace, t as createMeetWithBrowserProxyOnNode } from "./chrome-create-
|
|
1
|
+
import { g as createGoogleMeetSpace, t as createMeetWithBrowserProxyOnNode } from "./chrome-create-DMKruRFW.js";
|
|
2
2
|
import { resolveGoogleMeetAccessToken } from "./oauth-DOfMKlGp.js";
|
|
3
3
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
4
4
|
//#region \0rolldown/runtime.js
|