@openclaw/google-meet 2026.7.2-beta.7 → 2026.7.33

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 (207) hide show
  1. package/dist/{chrome-create-DMKruRFW.js → .setup/chrome-create-CFNlY-qH.mjs} +153 -132
  2. package/dist/{cli-DCcRyaMf.js → .setup/cli-DfOl5mwt.mjs} +707 -716
  3. package/dist/{config-BcaS1BDr.js → .setup/config-DeJhjNWQ.mjs} +95 -76
  4. package/dist/{create-af1MDlus.js → .setup/create-BVsTTJt1.mjs} +3 -21
  5. package/dist/{google-api-errors-CDUYkIcK.js → .setup/google-api-errors-BDYXfKRa.mjs} +1 -1
  6. package/dist/{oauth-DOfMKlGp.js → .setup/oauth-CtVbvmvR.mjs} +4 -3
  7. package/dist/doctor-contract-api.js +3 -1
  8. package/dist/index.js +3868 -1818
  9. package/node_modules/{jszip/node_modules/setimmediate/LICENSE.txt → commander/LICENSE} +10 -8
  10. package/node_modules/commander/Readme.md +1172 -0
  11. package/node_modules/commander/index.js +21 -0
  12. package/node_modules/commander/lib/argument.js +147 -0
  13. package/node_modules/commander/lib/command.js +2790 -0
  14. package/node_modules/commander/lib/error.js +36 -0
  15. package/node_modules/commander/lib/help.js +731 -0
  16. package/node_modules/commander/lib/option.js +377 -0
  17. package/node_modules/commander/lib/suggestSimilar.js +99 -0
  18. package/node_modules/commander/package-support.json +19 -0
  19. package/node_modules/commander/package.json +64 -0
  20. package/node_modules/commander/typings/index.d.ts +1113 -0
  21. package/node_modules/typebox/build/compile/validator.d.mts +4 -1
  22. package/node_modules/typebox/build/guard/guard.d.mts +1 -1
  23. package/node_modules/typebox/build/guard/guard.mjs +2 -5
  24. package/node_modules/typebox/build/guard/string.mjs +4 -16
  25. package/node_modules/typebox/build/schema/engine/_functions.mjs +15 -34
  26. package/node_modules/typebox/build/type/action/readonly_object.d.mts +0 -5
  27. package/node_modules/typebox/build/type/action/readonly_object.mjs +0 -8
  28. package/node_modules/typebox/build/typebox.d.mts +1 -1
  29. package/node_modules/typebox/build/typebox.mjs +1 -1
  30. package/node_modules/typebox/package.json +1 -1
  31. package/node_modules/typebox/readme.md +32 -29
  32. package/openclaw.plugin.json +3 -4
  33. package/package.json +7 -9
  34. package/dist/cli-metadata.js +0 -13
  35. package/dist/cli-output-mode-BwH_6tH8.js +0 -28
  36. package/node_modules/jszip/.codeclimate.yml +0 -16
  37. package/node_modules/jszip/.editorconfig +0 -8
  38. package/node_modules/jszip/.eslintrc.js +0 -43
  39. package/node_modules/jszip/.github/workflows/pr.yaml +0 -58
  40. package/node_modules/jszip/.jekyll-metadata +0 -0
  41. package/node_modules/jszip/.travis.yml +0 -17
  42. package/node_modules/jszip/CHANGES.md +0 -204
  43. package/node_modules/jszip/LICENSE.markdown +0 -651
  44. package/node_modules/jszip/README.markdown +0 -33
  45. package/node_modules/jszip/deps.js +0 -37
  46. package/node_modules/jszip/dist/jszip.js +0 -11577
  47. package/node_modules/jszip/dist/jszip.min.js +0 -13
  48. package/node_modules/jszip/graph.svg +0 -601
  49. package/node_modules/jszip/index.d.ts +0 -330
  50. package/node_modules/jszip/lib/base64.js +0 -106
  51. package/node_modules/jszip/lib/compressedObject.js +0 -74
  52. package/node_modules/jszip/lib/compressions.js +0 -14
  53. package/node_modules/jszip/lib/crc32.js +0 -77
  54. package/node_modules/jszip/lib/defaults.js +0 -11
  55. package/node_modules/jszip/lib/external.js +0 -18
  56. package/node_modules/jszip/lib/flate.js +0 -85
  57. package/node_modules/jszip/lib/generate/ZipFileWorker.js +0 -539
  58. package/node_modules/jszip/lib/generate/index.js +0 -57
  59. package/node_modules/jszip/lib/index.js +0 -55
  60. package/node_modules/jszip/lib/license_header.js +0 -11
  61. package/node_modules/jszip/lib/load.js +0 -88
  62. package/node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js +0 -74
  63. package/node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js +0 -42
  64. package/node_modules/jszip/lib/nodejsUtils.js +0 -57
  65. package/node_modules/jszip/lib/object.js +0 -384
  66. package/node_modules/jszip/lib/readable-stream-browser.js +0 -10
  67. package/node_modules/jszip/lib/reader/ArrayReader.js +0 -57
  68. package/node_modules/jszip/lib/reader/DataReader.js +0 -116
  69. package/node_modules/jszip/lib/reader/NodeBufferReader.js +0 -19
  70. package/node_modules/jszip/lib/reader/StringReader.js +0 -38
  71. package/node_modules/jszip/lib/reader/Uint8ArrayReader.js +0 -22
  72. package/node_modules/jszip/lib/reader/readerFor.js +0 -28
  73. package/node_modules/jszip/lib/signature.js +0 -7
  74. package/node_modules/jszip/lib/stream/ConvertWorker.js +0 -26
  75. package/node_modules/jszip/lib/stream/Crc32Probe.js +0 -24
  76. package/node_modules/jszip/lib/stream/DataLengthProbe.js +0 -29
  77. package/node_modules/jszip/lib/stream/DataWorker.js +0 -116
  78. package/node_modules/jszip/lib/stream/GenericWorker.js +0 -263
  79. package/node_modules/jszip/lib/stream/StreamHelper.js +0 -214
  80. package/node_modules/jszip/lib/support.js +0 -38
  81. package/node_modules/jszip/lib/utf8.js +0 -275
  82. package/node_modules/jszip/lib/utils.js +0 -501
  83. package/node_modules/jszip/lib/zipEntries.js +0 -261
  84. package/node_modules/jszip/lib/zipEntry.js +0 -293
  85. package/node_modules/jszip/lib/zipObject.js +0 -133
  86. package/node_modules/jszip/node_modules/core-util-is/LICENSE +0 -19
  87. package/node_modules/jszip/node_modules/core-util-is/README.md +0 -3
  88. package/node_modules/jszip/node_modules/core-util-is/lib/util.js +0 -107
  89. package/node_modules/jszip/node_modules/core-util-is/package.json +0 -38
  90. package/node_modules/jszip/node_modules/immediate/LICENSE.txt +0 -20
  91. package/node_modules/jszip/node_modules/immediate/README.md +0 -93
  92. package/node_modules/jszip/node_modules/immediate/dist/immediate.js +0 -75
  93. package/node_modules/jszip/node_modules/immediate/dist/immediate.min.js +0 -1
  94. package/node_modules/jszip/node_modules/immediate/lib/browser.js +0 -69
  95. package/node_modules/jszip/node_modules/immediate/lib/index.js +0 -73
  96. package/node_modules/jszip/node_modules/immediate/package.json +0 -42
  97. package/node_modules/jszip/node_modules/inherits/LICENSE +0 -16
  98. package/node_modules/jszip/node_modules/inherits/README.md +0 -42
  99. package/node_modules/jszip/node_modules/inherits/inherits.js +0 -9
  100. package/node_modules/jszip/node_modules/inherits/inherits_browser.js +0 -27
  101. package/node_modules/jszip/node_modules/inherits/package.json +0 -29
  102. package/node_modules/jszip/node_modules/isarray/.npmignore +0 -1
  103. package/node_modules/jszip/node_modules/isarray/.travis.yml +0 -4
  104. package/node_modules/jszip/node_modules/isarray/Makefile +0 -6
  105. package/node_modules/jszip/node_modules/isarray/README.md +0 -60
  106. package/node_modules/jszip/node_modules/isarray/component.json +0 -19
  107. package/node_modules/jszip/node_modules/isarray/index.js +0 -5
  108. package/node_modules/jszip/node_modules/isarray/package.json +0 -45
  109. package/node_modules/jszip/node_modules/isarray/test.js +0 -20
  110. package/node_modules/jszip/node_modules/lie/README.md +0 -62
  111. package/node_modules/jszip/node_modules/lie/dist/lie.js +0 -350
  112. package/node_modules/jszip/node_modules/lie/dist/lie.min.js +0 -1
  113. package/node_modules/jszip/node_modules/lie/dist/lie.polyfill.js +0 -358
  114. package/node_modules/jszip/node_modules/lie/dist/lie.polyfill.min.js +0 -1
  115. package/node_modules/jszip/node_modules/lie/lib/browser.js +0 -273
  116. package/node_modules/jszip/node_modules/lie/lib/index.js +0 -298
  117. package/node_modules/jszip/node_modules/lie/license.md +0 -7
  118. package/node_modules/jszip/node_modules/lie/lie.d.ts +0 -244
  119. package/node_modules/jszip/node_modules/lie/package.json +0 -69
  120. package/node_modules/jszip/node_modules/lie/polyfill.js +0 -4
  121. package/node_modules/jszip/node_modules/pako/CHANGELOG.md +0 -164
  122. package/node_modules/jszip/node_modules/pako/LICENSE +0 -21
  123. package/node_modules/jszip/node_modules/pako/README.md +0 -191
  124. package/node_modules/jszip/node_modules/pako/dist/pako.js +0 -6818
  125. package/node_modules/jszip/node_modules/pako/dist/pako.min.js +0 -1
  126. package/node_modules/jszip/node_modules/pako/dist/pako_deflate.js +0 -3997
  127. package/node_modules/jszip/node_modules/pako/dist/pako_deflate.min.js +0 -1
  128. package/node_modules/jszip/node_modules/pako/dist/pako_inflate.js +0 -3300
  129. package/node_modules/jszip/node_modules/pako/dist/pako_inflate.min.js +0 -1
  130. package/node_modules/jszip/node_modules/pako/index.js +0 -14
  131. package/node_modules/jszip/node_modules/pako/lib/deflate.js +0 -400
  132. package/node_modules/jszip/node_modules/pako/lib/inflate.js +0 -423
  133. package/node_modules/jszip/node_modules/pako/lib/utils/common.js +0 -105
  134. package/node_modules/jszip/node_modules/pako/lib/utils/strings.js +0 -187
  135. package/node_modules/jszip/node_modules/pako/lib/zlib/README +0 -59
  136. package/node_modules/jszip/node_modules/pako/lib/zlib/adler32.js +0 -51
  137. package/node_modules/jszip/node_modules/pako/lib/zlib/constants.js +0 -68
  138. package/node_modules/jszip/node_modules/pako/lib/zlib/crc32.js +0 -59
  139. package/node_modules/jszip/node_modules/pako/lib/zlib/deflate.js +0 -1874
  140. package/node_modules/jszip/node_modules/pako/lib/zlib/gzheader.js +0 -58
  141. package/node_modules/jszip/node_modules/pako/lib/zlib/inffast.js +0 -345
  142. package/node_modules/jszip/node_modules/pako/lib/zlib/inflate.js +0 -1556
  143. package/node_modules/jszip/node_modules/pako/lib/zlib/inftrees.js +0 -343
  144. package/node_modules/jszip/node_modules/pako/lib/zlib/messages.js +0 -32
  145. package/node_modules/jszip/node_modules/pako/lib/zlib/trees.js +0 -1222
  146. package/node_modules/jszip/node_modules/pako/lib/zlib/zstream.js +0 -47
  147. package/node_modules/jszip/node_modules/pako/package.json +0 -44
  148. package/node_modules/jszip/node_modules/process-nextick-args/index.js +0 -45
  149. package/node_modules/jszip/node_modules/process-nextick-args/license.md +0 -19
  150. package/node_modules/jszip/node_modules/process-nextick-args/package.json +0 -25
  151. package/node_modules/jszip/node_modules/process-nextick-args/readme.md +0 -18
  152. package/node_modules/jszip/node_modules/readable-stream/.travis.yml +0 -34
  153. package/node_modules/jszip/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  154. package/node_modules/jszip/node_modules/readable-stream/GOVERNANCE.md +0 -136
  155. package/node_modules/jszip/node_modules/readable-stream/LICENSE +0 -47
  156. package/node_modules/jszip/node_modules/readable-stream/README.md +0 -58
  157. package/node_modules/jszip/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -60
  158. package/node_modules/jszip/node_modules/readable-stream/duplex-browser.js +0 -1
  159. package/node_modules/jszip/node_modules/readable-stream/duplex.js +0 -1
  160. package/node_modules/jszip/node_modules/readable-stream/lib/_stream_duplex.js +0 -131
  161. package/node_modules/jszip/node_modules/readable-stream/lib/_stream_passthrough.js +0 -47
  162. package/node_modules/jszip/node_modules/readable-stream/lib/_stream_readable.js +0 -1019
  163. package/node_modules/jszip/node_modules/readable-stream/lib/_stream_transform.js +0 -214
  164. package/node_modules/jszip/node_modules/readable-stream/lib/_stream_writable.js +0 -685
  165. package/node_modules/jszip/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -78
  166. package/node_modules/jszip/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -84
  167. package/node_modules/jszip/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  168. package/node_modules/jszip/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  169. package/node_modules/jszip/node_modules/readable-stream/package.json +0 -52
  170. package/node_modules/jszip/node_modules/readable-stream/passthrough.js +0 -1
  171. package/node_modules/jszip/node_modules/readable-stream/readable-browser.js +0 -7
  172. package/node_modules/jszip/node_modules/readable-stream/readable.js +0 -19
  173. package/node_modules/jszip/node_modules/readable-stream/transform.js +0 -1
  174. package/node_modules/jszip/node_modules/readable-stream/writable-browser.js +0 -1
  175. package/node_modules/jszip/node_modules/readable-stream/writable.js +0 -8
  176. package/node_modules/jszip/node_modules/safe-buffer/LICENSE +0 -21
  177. package/node_modules/jszip/node_modules/safe-buffer/README.md +0 -584
  178. package/node_modules/jszip/node_modules/safe-buffer/index.d.ts +0 -187
  179. package/node_modules/jszip/node_modules/safe-buffer/index.js +0 -62
  180. package/node_modules/jszip/node_modules/safe-buffer/package.json +0 -37
  181. package/node_modules/jszip/node_modules/setimmediate/package.json +0 -30
  182. package/node_modules/jszip/node_modules/setimmediate/setImmediate.js +0 -186
  183. package/node_modules/jszip/node_modules/string_decoder/.travis.yml +0 -50
  184. package/node_modules/jszip/node_modules/string_decoder/LICENSE +0 -48
  185. package/node_modules/jszip/node_modules/string_decoder/README.md +0 -47
  186. package/node_modules/jszip/node_modules/string_decoder/lib/string_decoder.js +0 -296
  187. package/node_modules/jszip/node_modules/string_decoder/package.json +0 -31
  188. package/node_modules/jszip/node_modules/util-deprecate/History.md +0 -16
  189. package/node_modules/jszip/node_modules/util-deprecate/LICENSE +0 -24
  190. package/node_modules/jszip/node_modules/util-deprecate/README.md +0 -53
  191. package/node_modules/jszip/node_modules/util-deprecate/browser.js +0 -67
  192. package/node_modules/jszip/node_modules/util-deprecate/node.js +0 -6
  193. package/node_modules/jszip/node_modules/util-deprecate/package.json +0 -27
  194. package/node_modules/jszip/package.json +0 -67
  195. package/node_modules/jszip/sponsors.md +0 -21
  196. package/node_modules/jszip/tsconfig.json +0 -101
  197. package/node_modules/jszip/vendor/FileSaver.js +0 -247
  198. package/node_modules/pretty-ms/index.d.ts +0 -157
  199. package/node_modules/pretty-ms/index.js +0 -149
  200. package/node_modules/pretty-ms/license +0 -9
  201. package/node_modules/pretty-ms/node_modules/parse-ms/index.d.ts +0 -30
  202. package/node_modules/pretty-ms/node_modules/parse-ms/index.js +0 -45
  203. package/node_modules/pretty-ms/node_modules/parse-ms/license +0 -9
  204. package/node_modules/pretty-ms/node_modules/parse-ms/package.json +0 -47
  205. package/node_modules/pretty-ms/node_modules/parse-ms/readme.md +0 -46
  206. package/node_modules/pretty-ms/package.json +0 -55
  207. package/node_modules/pretty-ms/readme.md +0 -179
@@ -1,32 +1,13 @@
1
- import { t as googleApiError } from "./google-api-errors-CDUYkIcK.js";
1
+ import { t as googleApiError } from "./google-api-errors-BDYXfKRa.mjs";
2
2
  import { asRecord, normalizeOptionalLowercaseString, normalizeOptionalString, normalizeOptionalTrimmedStringList } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  import { readProviderJsonResponse } from "openclaw/plugin-sdk/provider-http";
4
4
  import { fetchWithSsrFGuard } from "openclaw/plugin-sdk/ssrf-runtime";
5
- import { buildMeetingSoxAudioCommands } from "openclaw/plugin-sdk/meeting-runtime";
6
5
  import { addTimerTimeoutGraceMs, resolvePositiveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
7
6
  import { REALTIME_VOICE_AGENT_CONSULT_TOOL_NAME, resolveRealtimeVoiceAgentConsultToolPolicy } from "openclaw/plugin-sdk/realtime-voice";
8
- //#region extensions/google-meet/src/meet-url.ts
9
- function normalizeOptionalString$1(value) {
10
- if (typeof value !== "string") return;
11
- return value.trim() || void 0;
12
- }
13
- function normalizeMeetUrl(input) {
14
- const raw = normalizeOptionalString$1(input);
15
- if (!raw) throw new Error("url required");
16
- let url;
17
- try {
18
- url = new URL(raw);
19
- } catch {
20
- throw new Error("url must be a valid Google Meet URL");
21
- }
22
- 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");
23
- 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");
24
- return url.toString();
25
- }
26
- //#endregion
27
7
  //#region extensions/google-meet/src/calendar.ts
28
8
  const GOOGLE_CALENDAR_API_BASE_URL = "https://www.googleapis.com/calendar/v3";
29
9
  const GOOGLE_CALENDAR_API_HOST = "www.googleapis.com";
10
+ const GOOGLE_MEET_URL_HOST = "meet.google.com";
30
11
  const GOOGLE_CALENDAR_EVENTS_SCOPE = "https://www.googleapis.com/auth/calendar.events.readonly";
31
12
  const GOOGLE_CALENDAR_REQUEST_TIMEOUT_MS = 3e4;
32
13
  function appendQuery(url, query) {
@@ -34,40 +15,24 @@ function appendQuery(url, query) {
34
15
  for (const [key, value] of Object.entries(query)) if (value !== void 0) parsed.searchParams.set(key, String(value));
35
16
  return parsed.toString();
36
17
  }
37
- function normalizeGoogleMeetCalendarUri(value) {
38
- if (!value?.trim()) return;
18
+ function isGoogleMeetUri(value) {
19
+ if (!value?.trim()) return false;
39
20
  try {
40
- const url = new URL(value);
41
- if (url.protocol !== "http:" && url.protocol !== "https:") return;
42
- if (url.hostname.toLowerCase() !== "meet.google.com" || url.port || url.username || url.password) return;
43
- url.protocol = "https:";
44
- return normalizeMeetUrl(url.toString());
21
+ return new URL(value).hostname === GOOGLE_MEET_URL_HOST;
45
22
  } catch {
46
- return;
23
+ return false;
47
24
  }
48
25
  }
49
26
  function extractGoogleMeetUriFromText(value) {
50
- const matches = value?.matchAll(/https:\/\/meet\.google\.com\/[a-z0-9-]+/gi);
51
- for (const match of matches ?? []) {
52
- const uri = normalizeGoogleMeetCalendarUri(match[0]);
53
- if (uri) return uri;
54
- }
55
- }
56
- function findFirstGoogleMeetCalendarUri(entryPoints, predicate = () => true) {
57
- for (const entry of entryPoints) {
58
- if (!predicate(entry)) continue;
59
- const uri = normalizeGoogleMeetCalendarUri(entry.uri);
60
- if (uri) return uri;
61
- }
27
+ return (value?.match(/https:\/\/meet\.google\.com\/[a-z0-9-]+/i))?.[0];
62
28
  }
63
29
  function extractGoogleMeetUriFromCalendarEvent(event) {
64
- const hangoutLink = normalizeGoogleMeetCalendarUri(event.hangoutLink);
65
- if (hangoutLink) return hangoutLink;
30
+ if (isGoogleMeetUri(event.hangoutLink)) return event.hangoutLink;
66
31
  const entryPoints = event.conferenceData?.entryPoints ?? [];
67
- const videoEntryUri = findFirstGoogleMeetCalendarUri(entryPoints, (entry) => entry.entryPointType === "video");
68
- if (videoEntryUri) return videoEntryUri;
69
- const meetEntryUri = findFirstGoogleMeetCalendarUri(entryPoints);
70
- if (meetEntryUri) return meetEntryUri;
32
+ const videoEntry = entryPoints.find((entry) => entry.entryPointType === "video" && isGoogleMeetUri(entry.uri));
33
+ if (videoEntry?.uri) return videoEntry.uri;
34
+ const meetEntry = entryPoints.find((entry) => isGoogleMeetUri(entry.uri));
35
+ if (meetEntry?.uri) return meetEntry.uri;
71
36
  return extractGoogleMeetUriFromText(event.location) ?? extractGoogleMeetUriFromText(event.description);
72
37
  }
73
38
  function buildGoogleMeetCalendarDayWindow(now = /* @__PURE__ */ new Date()) {
@@ -91,7 +56,7 @@ function rankCalendarEvent(event, nowMs) {
91
56
  const endMs = parseCalendarEventTime(event.end) ?? startMs;
92
57
  if (startMs <= nowMs && endMs >= nowMs) return 0;
93
58
  if (startMs > nowMs) return startMs - nowMs;
94
- return nowMs - startMs + 720 * 60 * 60 * 1e3;
59
+ return nowMs - startMs + 2592e6;
95
60
  }
96
61
  function chooseBestMeetCalendarEvent(events, now) {
97
62
  const nowMs = now.getTime();
@@ -181,31 +146,85 @@ const SOX_DEFAULT_BUFFER_BYTES = 8192;
181
146
  const SOX_MIN_BUFFER_BYTES = 17;
182
147
  const DEFAULT_GOOGLE_MEET_AUDIO_BUFFER_BYTES = SOX_DEFAULT_BUFFER_BYTES / 2;
183
148
  const PLAIN_DECIMAL_NUMBER_RE = /^\d+(?:\.\d+)?$/;
184
- function buildGoogleMeetSoxAudioCommands(format, bufferBytes) {
185
- return format === "g711-ulaw-8khz" ? buildMeetingSoxAudioCommands({
186
- bufferBytes,
187
- format: {
188
- sampleRate: 8e3,
189
- channels: 1,
190
- encoding: "mu-law",
191
- bits: 8
192
- }
193
- }) : buildMeetingSoxAudioCommands({
194
- bufferBytes,
195
- device: "BlackHole 2ch",
196
- deviceType: "coreaudio",
197
- format: {
198
- sampleRate: 24e3,
199
- channels: 1,
200
- encoding: "signed-integer",
201
- bits: 16,
202
- endian: "little"
203
- }
204
- });
205
- }
206
- const DEFAULT_GOOGLE_MEET_SOX_COMMANDS = buildGoogleMeetSoxAudioCommands("pcm16-24khz", DEFAULT_GOOGLE_MEET_AUDIO_BUFFER_BYTES);
207
- const DEFAULT_GOOGLE_MEET_AUDIO_INPUT_COMMAND = DEFAULT_GOOGLE_MEET_SOX_COMMANDS.inputCommand;
208
- const DEFAULT_GOOGLE_MEET_AUDIO_OUTPUT_COMMAND = DEFAULT_GOOGLE_MEET_SOX_COMMANDS.outputCommand;
149
+ function withSoxBuffer(command, bufferBytes) {
150
+ return [
151
+ command[0] ?? "sox",
152
+ "-q",
153
+ "--buffer",
154
+ String(bufferBytes),
155
+ ...command.slice(2)
156
+ ];
157
+ }
158
+ const DEFAULT_GOOGLE_MEET_AUDIO_INPUT_COMMAND_BASE = [
159
+ "sox",
160
+ "-q",
161
+ "-t",
162
+ "coreaudio",
163
+ "BlackHole 2ch",
164
+ "-t",
165
+ "raw",
166
+ "-r",
167
+ "24000",
168
+ "-c",
169
+ "1",
170
+ "-e",
171
+ "signed-integer",
172
+ "-b",
173
+ "16",
174
+ "-L",
175
+ "-"
176
+ ];
177
+ const DEFAULT_GOOGLE_MEET_AUDIO_OUTPUT_COMMAND_BASE = [
178
+ "sox",
179
+ "-q",
180
+ "-t",
181
+ "raw",
182
+ "-r",
183
+ "24000",
184
+ "-c",
185
+ "1",
186
+ "-e",
187
+ "signed-integer",
188
+ "-b",
189
+ "16",
190
+ "-L",
191
+ "-",
192
+ "-t",
193
+ "coreaudio",
194
+ "BlackHole 2ch"
195
+ ];
196
+ const LEGACY_GOOGLE_MEET_AUDIO_INPUT_COMMAND_BASE = [
197
+ "rec",
198
+ "-q",
199
+ "-t",
200
+ "raw",
201
+ "-r",
202
+ "8000",
203
+ "-c",
204
+ "1",
205
+ "-e",
206
+ "mu-law",
207
+ "-b",
208
+ "8",
209
+ "-"
210
+ ];
211
+ const LEGACY_GOOGLE_MEET_AUDIO_OUTPUT_COMMAND_BASE = [
212
+ "play",
213
+ "-q",
214
+ "-t",
215
+ "raw",
216
+ "-r",
217
+ "8000",
218
+ "-c",
219
+ "1",
220
+ "-e",
221
+ "mu-law",
222
+ "-b",
223
+ "8",
224
+ "-"
225
+ ];
226
+ const DEFAULT_GOOGLE_MEET_AUDIO_INPUT_COMMAND = withSoxBuffer(DEFAULT_GOOGLE_MEET_AUDIO_INPUT_COMMAND_BASE, DEFAULT_GOOGLE_MEET_AUDIO_BUFFER_BYTES);
227
+ const DEFAULT_GOOGLE_MEET_AUDIO_OUTPUT_COMMAND = withSoxBuffer(DEFAULT_GOOGLE_MEET_AUDIO_OUTPUT_COMMAND_BASE, DEFAULT_GOOGLE_MEET_AUDIO_BUFFER_BYTES);
209
228
  const DEFAULT_GOOGLE_MEET_CHROME_AUDIO_FORMAT = "pcm16-24khz";
210
229
  const DEFAULT_GOOGLE_MEET_BARGE_IN_RMS_THRESHOLD = 650;
211
230
  const DEFAULT_GOOGLE_MEET_BARGE_IN_PEAK_THRESHOLD = 2500;
@@ -352,10 +371,10 @@ function resolveAudioBufferBytes(value, fallback) {
352
371
  return Math.max(SOX_MIN_BUFFER_BYTES, Math.trunc(number));
353
372
  }
354
373
  function defaultAudioInputCommand(format, bufferBytes) {
355
- return buildGoogleMeetSoxAudioCommands(format, bufferBytes).inputCommand;
374
+ return withSoxBuffer(format === "g711-ulaw-8khz" ? LEGACY_GOOGLE_MEET_AUDIO_INPUT_COMMAND_BASE : DEFAULT_GOOGLE_MEET_AUDIO_INPUT_COMMAND_BASE, bufferBytes);
356
375
  }
357
376
  function defaultAudioOutputCommand(format, bufferBytes) {
358
- return buildGoogleMeetSoxAudioCommands(format, bufferBytes).outputCommand;
377
+ return withSoxBuffer(format === "g711-ulaw-8khz" ? LEGACY_GOOGLE_MEET_AUDIO_OUTPUT_COMMAND_BASE : DEFAULT_GOOGLE_MEET_AUDIO_OUTPUT_COMMAND_BASE, bufferBytes);
359
378
  }
360
379
  function resolveGoogleMeetConfig(input) {
361
380
  return resolveGoogleMeetConfigWithEnv(input);
@@ -447,4 +466,4 @@ function resolveGoogleMeetConfigWithEnv(input, env = process.env) {
447
466
  };
448
467
  }
449
468
  //#endregion
450
- export { buildGoogleMeetCalendarDayWindow as a, normalizeMeetUrl as c, resolveGoogleMeetGatewayOperationTimeoutMs as i, DEFAULT_GOOGLE_MEET_AUDIO_OUTPUT_COMMAND as n, findGoogleMeetCalendarEvent as o, resolveGoogleMeetConfig as r, listGoogleMeetCalendarEvents as s, DEFAULT_GOOGLE_MEET_AUDIO_INPUT_COMMAND as t };
469
+ export { buildGoogleMeetCalendarDayWindow as a, resolveGoogleMeetGatewayOperationTimeoutMs as i, DEFAULT_GOOGLE_MEET_AUDIO_OUTPUT_COMMAND as n, findGoogleMeetCalendarEvent as o, resolveGoogleMeetConfig as r, listGoogleMeetCalendarEvents as s, DEFAULT_GOOGLE_MEET_AUDIO_INPUT_COMMAND as t };
@@ -1,25 +1,7 @@
1
- import { g as createGoogleMeetSpace, t as createMeetWithBrowserProxyOnNode } from "./chrome-create-DMKruRFW.js";
2
- import { resolveGoogleMeetAccessToken } from "./oauth-DOfMKlGp.js";
1
+ import { f as createGoogleMeetSpace, t as createMeetWithBrowserProxyOnNode } from "./chrome-create-CFNlY-qH.mjs";
2
+ import { resolveGoogleMeetAccessToken } from "./oauth-CtVbvmvR.mjs";
3
3
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
4
- //#region \0rolldown/runtime.js
5
- var __defProp = Object.defineProperty;
6
- var __exportAll = (all, no_symbols) => {
7
- let target = {};
8
- for (var name in all) __defProp(target, name, {
9
- get: all[name],
10
- enumerable: true
11
- });
12
- if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
13
- return target;
14
- };
15
- //#endregion
16
4
  //#region extensions/google-meet/src/create.ts
17
- var create_exports = /* @__PURE__ */ __exportAll({
18
- createAndJoinMeetFromParams: () => createAndJoinMeetFromParams,
19
- createMeetFromParams: () => createMeetFromParams,
20
- hasCreateSpaceConfigInput: () => hasCreateSpaceConfigInput,
21
- resolveCreateSpaceConfig: () => resolveCreateSpaceConfig
22
- });
23
5
  function normalizeTransport(value) {
24
6
  return value === "chrome" || value === "chrome-node" || value === "twilio" ? value : void 0;
25
7
  }
@@ -124,4 +106,4 @@ async function createAndJoinMeetFromParams(params) {
124
106
  };
125
107
  }
126
108
  //#endregion
127
- export { hasCreateSpaceConfigInput as n, resolveCreateSpaceConfig as r, create_exports as t };
109
+ export { createAndJoinMeetFromParams, createMeetFromParams, hasCreateSpaceConfigInput, resolveCreateSpaceConfig };
@@ -1,7 +1,7 @@
1
1
  import { readResponseTextLimited } from "openclaw/plugin-sdk/provider-http";
2
2
  //#region extensions/google-meet/src/google-api-errors.ts
3
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;
4
+ const GOOGLE_API_ERROR_BODY_LIMIT_BYTES = 8192;
5
5
  function scopeText(scopes) {
6
6
  return scopes.map((scope) => `\`${scope}\``).join(", ");
7
7
  }
@@ -1,4 +1,4 @@
1
- import { n as readGoogleApiErrorDetail } from "./google-api-errors-CDUYkIcK.js";
1
+ import { n as readGoogleApiErrorDetail } from "./google-api-errors-BDYXfKRa.mjs";
2
2
  import { readProviderJsonResponse } from "openclaw/plugin-sdk/provider-http";
3
3
  import { fetchWithSsrFGuard } from "openclaw/plugin-sdk/ssrf-runtime";
4
4
  import { MAX_DATE_TIMESTAMP_MS, resolveDateTimestampMs, resolveExpiresAtMsFromDurationSeconds } from "openclaw/plugin-sdk/number-runtime";
@@ -10,7 +10,7 @@ const GOOGLE_MEET_AUTH_URL = "https://accounts.google.com/o/oauth2/v2/auth";
10
10
  const GOOGLE_MEET_TOKEN_URL = "https://oauth2.googleapis.com/token";
11
11
  const GOOGLE_MEET_TOKEN_HOST = "oauth2.googleapis.com";
12
12
  const GOOGLE_MEET_DEFAULT_TOKEN_LIFETIME_SECONDS = 3600;
13
- const GOOGLE_OAUTH_TOKEN_JSON_MAX_BYTES = 256 * 1024;
13
+ const GOOGLE_OAUTH_TOKEN_JSON_MAX_BYTES = 262144;
14
14
  const GOOGLE_OAUTH_REQUEST_TIMEOUT_MS = 3e4;
15
15
  const GOOGLE_MEET_SCOPES = [
16
16
  "https://www.googleapis.com/auth/meetings.space.created",
@@ -134,7 +134,8 @@ function isLocalCallbackListenerError(error) {
134
134
  return error.message.includes("EADDRINUSE") || error.message.includes("port") || error.message.includes("listen");
135
135
  }
136
136
  async function readManualGoogleMeetAuthCode(params) {
137
- const parsed = parseOAuthCallbackInput(await params.promptInput("Paste the full redirect URL here: "), {
137
+ const input = await params.promptInput("Paste the full redirect URL here: ");
138
+ const parsed = parseOAuthCallbackInput(input, {
138
139
  missingState: "Missing 'state' parameter. Paste the full redirect URL.",
139
140
  invalidInput: "Paste the full redirect URL, not just the code."
140
141
  });
@@ -20,7 +20,9 @@ const legacyConfigRules = [{
20
20
  match: hasLegacyGoogleRealtimeProvider
21
21
  }];
22
22
  function migrateGoogleMeetLegacyRealtimeProvider(config) {
23
- const rawRealtime = asNullableRecord(asNullableRecord(asNullableRecord(config.plugins?.entries?.["google-meet"])?.config)?.realtime);
23
+ const rawEntry = asNullableRecord(config.plugins?.entries?.["google-meet"]);
24
+ const rawPluginConfig = asNullableRecord(rawEntry?.config);
25
+ const rawRealtime = asNullableRecord(rawPluginConfig?.realtime);
24
26
  if (!rawRealtime || !hasLegacyGoogleRealtimeProvider(rawRealtime)) return null;
25
27
  const nextConfig = structuredClone(config);
26
28
  const nextPlugins = asNullableRecord(nextConfig.plugins) ?? {};