@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.
Files changed (122) hide show
  1. package/dist/{chrome-create-DkWXFsK2.js → chrome-create-DMKruRFW.js} +18 -17
  2. package/dist/{cli-CksOXL4n.js → cli-DCcRyaMf.js} +8 -18
  3. package/dist/cli-metadata.js +13 -0
  4. package/dist/cli-output-mode-BwH_6tH8.js +28 -0
  5. package/dist/{create-CNAkrEju.js → create-af1MDlus.js} +1 -1
  6. package/dist/index.js +68 -264
  7. package/package.json +4 -5
  8. package/npm-shrinkwrap.json +0 -157
  9. /package/node_modules/{core-util-is → jszip/node_modules/core-util-is}/LICENSE +0 -0
  10. /package/node_modules/{core-util-is → jszip/node_modules/core-util-is}/README.md +0 -0
  11. /package/node_modules/{core-util-is → jszip/node_modules/core-util-is}/lib/util.js +0 -0
  12. /package/node_modules/{core-util-is → jszip/node_modules/core-util-is}/package.json +0 -0
  13. /package/node_modules/{immediate → jszip/node_modules/immediate}/LICENSE.txt +0 -0
  14. /package/node_modules/{immediate → jszip/node_modules/immediate}/README.md +0 -0
  15. /package/node_modules/{immediate → jszip/node_modules/immediate}/dist/immediate.js +0 -0
  16. /package/node_modules/{immediate → jszip/node_modules/immediate}/dist/immediate.min.js +0 -0
  17. /package/node_modules/{immediate → jszip/node_modules/immediate}/lib/browser.js +0 -0
  18. /package/node_modules/{immediate → jszip/node_modules/immediate}/lib/index.js +0 -0
  19. /package/node_modules/{immediate → jszip/node_modules/immediate}/package.json +0 -0
  20. /package/node_modules/{inherits → jszip/node_modules/inherits}/LICENSE +0 -0
  21. /package/node_modules/{inherits → jszip/node_modules/inherits}/README.md +0 -0
  22. /package/node_modules/{inherits → jszip/node_modules/inherits}/inherits.js +0 -0
  23. /package/node_modules/{inherits → jszip/node_modules/inherits}/inherits_browser.js +0 -0
  24. /package/node_modules/{inherits → jszip/node_modules/inherits}/package.json +0 -0
  25. /package/node_modules/{isarray → jszip/node_modules/isarray}/.npmignore +0 -0
  26. /package/node_modules/{isarray → jszip/node_modules/isarray}/.travis.yml +0 -0
  27. /package/node_modules/{isarray → jszip/node_modules/isarray}/Makefile +0 -0
  28. /package/node_modules/{isarray → jszip/node_modules/isarray}/README.md +0 -0
  29. /package/node_modules/{isarray → jszip/node_modules/isarray}/component.json +0 -0
  30. /package/node_modules/{isarray → jszip/node_modules/isarray}/index.js +0 -0
  31. /package/node_modules/{isarray → jszip/node_modules/isarray}/package.json +0 -0
  32. /package/node_modules/{isarray → jszip/node_modules/isarray}/test.js +0 -0
  33. /package/node_modules/{lie → jszip/node_modules/lie}/README.md +0 -0
  34. /package/node_modules/{lie → jszip/node_modules/lie}/dist/lie.js +0 -0
  35. /package/node_modules/{lie → jszip/node_modules/lie}/dist/lie.min.js +0 -0
  36. /package/node_modules/{lie → jszip/node_modules/lie}/dist/lie.polyfill.js +0 -0
  37. /package/node_modules/{lie → jszip/node_modules/lie}/dist/lie.polyfill.min.js +0 -0
  38. /package/node_modules/{lie → jszip/node_modules/lie}/lib/browser.js +0 -0
  39. /package/node_modules/{lie → jszip/node_modules/lie}/lib/index.js +0 -0
  40. /package/node_modules/{lie → jszip/node_modules/lie}/license.md +0 -0
  41. /package/node_modules/{lie → jszip/node_modules/lie}/lie.d.ts +0 -0
  42. /package/node_modules/{lie → jszip/node_modules/lie}/package.json +0 -0
  43. /package/node_modules/{lie → jszip/node_modules/lie}/polyfill.js +0 -0
  44. /package/node_modules/{pako → jszip/node_modules/pako}/CHANGELOG.md +0 -0
  45. /package/node_modules/{pako → jszip/node_modules/pako}/LICENSE +0 -0
  46. /package/node_modules/{pako → jszip/node_modules/pako}/README.md +0 -0
  47. /package/node_modules/{pako → jszip/node_modules/pako}/dist/pako.js +0 -0
  48. /package/node_modules/{pako → jszip/node_modules/pako}/dist/pako.min.js +0 -0
  49. /package/node_modules/{pako → jszip/node_modules/pako}/dist/pako_deflate.js +0 -0
  50. /package/node_modules/{pako → jszip/node_modules/pako}/dist/pako_deflate.min.js +0 -0
  51. /package/node_modules/{pako → jszip/node_modules/pako}/dist/pako_inflate.js +0 -0
  52. /package/node_modules/{pako → jszip/node_modules/pako}/dist/pako_inflate.min.js +0 -0
  53. /package/node_modules/{pako → jszip/node_modules/pako}/index.js +0 -0
  54. /package/node_modules/{pako → jszip/node_modules/pako}/lib/deflate.js +0 -0
  55. /package/node_modules/{pako → jszip/node_modules/pako}/lib/inflate.js +0 -0
  56. /package/node_modules/{pako → jszip/node_modules/pako}/lib/utils/common.js +0 -0
  57. /package/node_modules/{pako → jszip/node_modules/pako}/lib/utils/strings.js +0 -0
  58. /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/README +0 -0
  59. /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/adler32.js +0 -0
  60. /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/constants.js +0 -0
  61. /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/crc32.js +0 -0
  62. /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/deflate.js +0 -0
  63. /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/gzheader.js +0 -0
  64. /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/inffast.js +0 -0
  65. /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/inflate.js +0 -0
  66. /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/inftrees.js +0 -0
  67. /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/messages.js +0 -0
  68. /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/trees.js +0 -0
  69. /package/node_modules/{pako → jszip/node_modules/pako}/lib/zlib/zstream.js +0 -0
  70. /package/node_modules/{pako → jszip/node_modules/pako}/package.json +0 -0
  71. /package/node_modules/{process-nextick-args → jszip/node_modules/process-nextick-args}/index.js +0 -0
  72. /package/node_modules/{process-nextick-args → jszip/node_modules/process-nextick-args}/license.md +0 -0
  73. /package/node_modules/{process-nextick-args → jszip/node_modules/process-nextick-args}/package.json +0 -0
  74. /package/node_modules/{process-nextick-args → jszip/node_modules/process-nextick-args}/readme.md +0 -0
  75. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/.travis.yml +0 -0
  76. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/CONTRIBUTING.md +0 -0
  77. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/GOVERNANCE.md +0 -0
  78. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/LICENSE +0 -0
  79. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/README.md +0 -0
  80. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/doc/wg-meetings/2015-01-30.md +0 -0
  81. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/duplex-browser.js +0 -0
  82. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/duplex.js +0 -0
  83. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/lib/_stream_duplex.js +0 -0
  84. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/lib/_stream_passthrough.js +0 -0
  85. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/lib/_stream_readable.js +0 -0
  86. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/lib/_stream_transform.js +0 -0
  87. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/lib/_stream_writable.js +0 -0
  88. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/lib/internal/streams/BufferList.js +0 -0
  89. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/lib/internal/streams/destroy.js +0 -0
  90. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/lib/internal/streams/stream-browser.js +0 -0
  91. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/lib/internal/streams/stream.js +0 -0
  92. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/package.json +0 -0
  93. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/passthrough.js +0 -0
  94. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/readable-browser.js +0 -0
  95. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/readable.js +0 -0
  96. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/transform.js +0 -0
  97. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/writable-browser.js +0 -0
  98. /package/node_modules/{readable-stream → jszip/node_modules/readable-stream}/writable.js +0 -0
  99. /package/node_modules/{safe-buffer → jszip/node_modules/safe-buffer}/LICENSE +0 -0
  100. /package/node_modules/{safe-buffer → jszip/node_modules/safe-buffer}/README.md +0 -0
  101. /package/node_modules/{safe-buffer → jszip/node_modules/safe-buffer}/index.d.ts +0 -0
  102. /package/node_modules/{safe-buffer → jszip/node_modules/safe-buffer}/index.js +0 -0
  103. /package/node_modules/{safe-buffer → jszip/node_modules/safe-buffer}/package.json +0 -0
  104. /package/node_modules/{setimmediate → jszip/node_modules/setimmediate}/LICENSE.txt +0 -0
  105. /package/node_modules/{setimmediate → jszip/node_modules/setimmediate}/package.json +0 -0
  106. /package/node_modules/{setimmediate → jszip/node_modules/setimmediate}/setImmediate.js +0 -0
  107. /package/node_modules/{string_decoder → jszip/node_modules/string_decoder}/.travis.yml +0 -0
  108. /package/node_modules/{string_decoder → jszip/node_modules/string_decoder}/LICENSE +0 -0
  109. /package/node_modules/{string_decoder → jszip/node_modules/string_decoder}/README.md +0 -0
  110. /package/node_modules/{string_decoder → jszip/node_modules/string_decoder}/lib/string_decoder.js +0 -0
  111. /package/node_modules/{string_decoder → jszip/node_modules/string_decoder}/package.json +0 -0
  112. /package/node_modules/{util-deprecate → jszip/node_modules/util-deprecate}/History.md +0 -0
  113. /package/node_modules/{util-deprecate → jszip/node_modules/util-deprecate}/LICENSE +0 -0
  114. /package/node_modules/{util-deprecate → jszip/node_modules/util-deprecate}/README.md +0 -0
  115. /package/node_modules/{util-deprecate → jszip/node_modules/util-deprecate}/browser.js +0 -0
  116. /package/node_modules/{util-deprecate → jszip/node_modules/util-deprecate}/node.js +0 -0
  117. /package/node_modules/{util-deprecate → jszip/node_modules/util-deprecate}/package.json +0 -0
  118. /package/node_modules/{parse-ms → pretty-ms/node_modules/parse-ms}/index.d.ts +0 -0
  119. /package/node_modules/{parse-ms → pretty-ms/node_modules/parse-ms}/index.js +0 -0
  120. /package/node_modules/{parse-ms → pretty-ms/node_modules/parse-ms}/license +0 -0
  121. /package/node_modules/{parse-ms → pretty-ms/node_modules/parse-ms}/package.json +0 -0
  122. /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
- const prefix = payload.manualActionReason ? `${payload.manualActionReason}: ` : "";
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: typeof nested.manualAction === "string" ? nested.manualAction : void 0,
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
- manualActionReason: "google-login-required",
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
- manualActionReason: "meet-audio-choice-required",
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
- manualActionReason: "meet-permission-required",
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
- manualActionReason: "google-login-required",
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
- manualActionRequired: true,
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-CNAkrEju.js";
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-DkWXFsK2.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-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?.manualActionRequired));
147
- if (health?.manualActionRequired) {
148
- writeStdoutLine("manual reason: %s", formatOptional(health.manualActionReason));
149
- writeStdoutLine("manual message: %s", formatOptional(health.manualActionMessage));
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, resolveCreateTokenOptions, resolveMeetingInput, resolveOAuthTokenOptions } = context;
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(resolveCreateTokenOptions(params.config, options));
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-DkWXFsK2.js";
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