@openclaw/google-meet 2026.9.4 → 2026.9.6
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/assets/activity.svg +40 -0
- package/assets/icon.png +0 -0
- package/dist/{chrome-create-PKAyxCiL.js → .setup/chrome-create-BZRBHJp9.mjs} +1 -1
- package/dist/{cli-BCUxht2Q.js → .setup/cli-CbxqjjTC.mjs} +68 -88
- package/dist/{create-Cr6rg236.js → .setup/create-CG9Pgwsb.mjs} +3 -3
- package/dist/{google-meet-platform-adapter-C3J-iFRE.js → .setup/google-meet-platform-adapter-DQZ74Kd5.mjs} +32 -3
- package/dist/{node-host-DS-lLN37.js → .setup/node-host-BUrsParx.mjs} +4 -7
- package/dist/{node-invoke-policy-B0gOlLJR.js → .setup/node-invoke-policy-hwXq9MfV.mjs} +2 -2
- package/dist/{oauth-DgBscjXK.js → .setup/oauth-22Ey-zCb.mjs} +1 -1
- package/dist/{plugin-helpers-RSH2DZTl.js → .setup/plugin-helpers--7X3icub.mjs} +5 -5
- package/dist/{plugin-registration-DLs9YDzZ.js → .setup/plugin-registration-B3LXKV4R.mjs} +32 -13
- package/dist/{runtime-CXfjJvPN.js → .setup/runtime-BuIZ5e3V.mjs} +8 -4
- package/dist/cli-metadata.js +1 -1
- package/dist/index.js +10 -5
- package/node_modules/jszip/.github/FUNDING.yml +1 -0
- package/node_modules/jszip/.github/actions/setup/action.yml +23 -0
- package/node_modules/jszip/.github/workflows/benchmark.yml +38 -0
- package/node_modules/jszip/.github/workflows/main.yml +55 -0
- package/node_modules/jszip/CHANGES.md +6 -0
- package/node_modules/jszip/dist/jszip.js +28 -19
- package/node_modules/jszip/dist/jszip.min.js +2 -2
- package/node_modules/jszip/index.d.ts +14 -0
- package/node_modules/jszip/lib/index.js +1 -1
- package/node_modules/jszip/lib/utils.js +26 -17
- package/node_modules/jszip/package.json +2 -2
- package/node_modules/typebox/build/compile/validator.d.mts +1 -1
- package/node_modules/typebox/build/compile/validator.mjs +1 -1
- package/node_modules/typebox/build/format/idna/idn-hostname.mjs +7 -5
- package/node_modules/typebox/build/format/iri.mjs +5 -1
- package/node_modules/typebox/build/guard/emit.mjs +2 -4
- package/node_modules/typebox/build/guard/guard.mjs +6 -18
- package/node_modules/typebox/build/guard/string.mjs +16 -24
- package/node_modules/typebox/build/schema/build.mjs +2 -2
- package/node_modules/typebox/build/schema/check.mjs +1 -1
- package/node_modules/typebox/build/schema/compile.d.mts +3 -2
- package/node_modules/typebox/build/schema/compile.mjs +8 -8
- package/node_modules/typebox/build/schema/engine/_context.d.mts +6 -7
- package/node_modules/typebox/build/schema/engine/_context.mjs +23 -15
- package/node_modules/typebox/build/schema/engine/_functions.d.mts +2 -2
- package/node_modules/typebox/build/schema/engine/_functions.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/_reducer.d.mts +3 -3
- package/node_modules/typebox/build/schema/engine/_refine.d.mts +5 -5
- package/node_modules/typebox/build/schema/engine/_refine.mjs +4 -7
- package/node_modules/typebox/build/schema/engine/_stack.d.mts +34 -16
- package/node_modules/typebox/build/schema/engine/_stack.mjs +148 -104
- package/node_modules/typebox/build/schema/engine/additionalItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/additionalProperties.d.mts +8 -8
- package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +26 -18
- package/node_modules/typebox/build/schema/engine/allOf.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/allOf.mjs +3 -3
- package/node_modules/typebox/build/schema/engine/anyOf.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/anyOf.mjs +5 -10
- package/node_modules/typebox/build/schema/engine/boolean.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/boolean.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/const.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/const.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/contains.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/contains.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/dependencies.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/dependencies.mjs +3 -6
- package/node_modules/typebox/build/schema/engine/dependentRequired.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/dependentRequired.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/dependentSchemas.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +11 -7
- package/node_modules/typebox/build/schema/engine/enum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/enum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/exclusiveMaximum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/exclusiveMaximum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/exclusiveMinimum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/exclusiveMinimum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/format.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/format.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/if.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/if.mjs +7 -15
- package/node_modules/typebox/build/schema/engine/items.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/items.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/maxContains.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maxContains.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/maxItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maxItems.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/maxLength.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maxLength.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/maxProperties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maxProperties.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/maximum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maximum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minContains.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/minContains.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minItems.d.mts +5 -5
- package/node_modules/typebox/build/schema/engine/minItems.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minLength.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/minLength.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minProperties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/minProperties.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minimum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/minimum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/multipleOf.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/multipleOf.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/not.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/not.mjs +4 -8
- package/node_modules/typebox/build/schema/engine/oneOf.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/oneOf.mjs +6 -11
- package/node_modules/typebox/build/schema/engine/pattern.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/pattern.mjs +3 -7
- package/node_modules/typebox/build/schema/engine/patternProperties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/patternProperties.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/prefixItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/prefixItems.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/properties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/properties.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/propertyNames.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/propertyNames.mjs +4 -10
- package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +11 -7
- package/node_modules/typebox/build/schema/engine/ref.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/ref.mjs +19 -15
- package/node_modules/typebox/build/schema/engine/required.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/required.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/schema.d.mts +7 -7
- package/node_modules/typebox/build/schema/engine/schema.mjs +137 -133
- package/node_modules/typebox/build/schema/engine/type.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/type.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/unevaluatedItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/unevaluatedItems.mjs +5 -9
- package/node_modules/typebox/build/schema/engine/unevaluatedProperties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/unevaluatedProperties.mjs +5 -9
- package/node_modules/typebox/build/schema/engine/uniqueItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/uniqueItems.mjs +2 -6
- package/node_modules/typebox/build/schema/errors.d.mts +2 -2
- package/node_modules/typebox/build/schema/errors.mjs +8 -14
- package/node_modules/typebox/build/schema/intern/index.d.mts +1 -0
- package/node_modules/typebox/build/schema/intern/index.mjs +1 -0
- package/node_modules/typebox/build/schema/intern/intern.d.mts +11 -0
- package/node_modules/typebox/build/schema/intern/intern.mjs +293 -0
- package/node_modules/typebox/build/schema/meta/draft_2019_09.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_2019_09.mjs +288 -0
- package/node_modules/typebox/build/schema/meta/draft_2020_12.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_2020_12.mjs +300 -0
- package/node_modules/typebox/build/schema/meta/draft_3.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_3.mjs +143 -0
- package/node_modules/typebox/build/schema/meta/draft_4.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_4.mjs +149 -0
- package/node_modules/typebox/build/schema/meta/draft_6.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_6.mjs +155 -0
- package/node_modules/typebox/build/schema/meta/draft_7.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_7.mjs +172 -0
- package/node_modules/typebox/build/schema/meta/index.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/index.mjs +2 -0
- package/node_modules/typebox/build/schema/meta/meta.d.mts +9 -0
- package/node_modules/typebox/build/schema/meta/meta.mjs +15 -0
- package/node_modules/typebox/build/schema/meta/schema.d.mts +6 -0
- package/node_modules/typebox/build/schema/meta/schema.mjs +1 -0
- package/node_modules/typebox/build/schema/parse.d.mts +1 -0
- package/node_modules/typebox/build/schema/parse.mjs +10 -5
- package/node_modules/typebox/build/schema/resolve/resolve.d.mts +8 -3
- package/node_modules/typebox/build/schema/resolve/resolve.mjs +268 -139
- package/node_modules/typebox/build/schema/schema.d.mts +2 -0
- package/node_modules/typebox/build/schema/schema.mjs +2 -0
- package/node_modules/typebox/build/value/errors/errors.d.mts +2 -12
- package/node_modules/typebox/build/value/errors/errors.mjs +2 -7
- package/node_modules/typebox/package.json +1 -1
- package/node_modules/typebox/readme.md +59 -89
- package/openclaw.plugin.json +33 -1
- package/package.json +10 -7
- package/node_modules/jszip/.github/workflows/pr.yaml +0 -58
- package/node_modules/jszip/.jekyll-metadata +0 -0
- package/node_modules/jszip/.travis.yml +0 -17
- package/node_modules/jszip/deps.js +0 -37
- package/node_modules/jszip/graph.svg +0 -601
- /package/dist/{cli-output-mode-BwH_6tH8.js → .setup/cli-output-mode-BwH_6tH8.mjs} +0 -0
- /package/dist/{config-C-6enWkx.js → .setup/config-C-6enWkx.mjs} +0 -0
- /package/dist/{google-api-errors-BDYXfKRa.js → .setup/google-api-errors-BDYXfKRa.mjs} +0 -0
- /package/dist/{google-meet-platform-constants-Bs5iAg3E.js → .setup/google-meet-platform-constants-Bs5iAg3E.mjs} +0 -0
- /package/dist/{meet-url-BP2Jlvjs.js → .setup/meet-url-BP2Jlvjs.mjs} +0 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2
|
+
<!--
|
|
3
|
+
Source: simple-icons@16.31.0, icons/googlemeet.svg
|
|
4
|
+
https://www.npmjs.com/package/simple-icons/v/16.31.0
|
|
5
|
+
https://github.com/simple-icons/simple-icons
|
|
6
|
+
|
|
7
|
+
# CC0 1.0 Universal
|
|
8
|
+
|
|
9
|
+
## Statement of Purpose
|
|
10
|
+
|
|
11
|
+
The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an “owner”) of an original work of authorship and/or a database (each, a “Work”).
|
|
12
|
+
|
|
13
|
+
Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works (“Commons”) that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others.
|
|
14
|
+
|
|
15
|
+
For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the “Affirmer”), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights.
|
|
16
|
+
|
|
17
|
+
1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights (“Copyright and Related Rights”). Copyright and Related Rights include, but are not limited to, the following:
|
|
18
|
+
1. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work;
|
|
19
|
+
2. moral rights retained by the original author(s) and/or performer(s);
|
|
20
|
+
3. publicity and privacy rights pertaining to a person’s image or likeness depicted in a Work;
|
|
21
|
+
4. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(i), below;
|
|
22
|
+
5. rights protecting the extraction, dissemination, use and reuse of data in a Work;
|
|
23
|
+
6. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and
|
|
24
|
+
7. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof.
|
|
25
|
+
|
|
26
|
+
2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer’s Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the “Waiver”). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer’s heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer’s express Statement of Purpose.
|
|
27
|
+
|
|
28
|
+
3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer’s express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer’s Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the “License”). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer’s express Statement of Purpose.
|
|
29
|
+
|
|
30
|
+
4. Limitations and Disclaimers.
|
|
31
|
+
1. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document.
|
|
32
|
+
2. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law.
|
|
33
|
+
3. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person’s Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work.
|
|
34
|
+
4. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work.
|
|
35
|
+
|
|
36
|
+
For more information, please see <https://creativecommons.org/publicdomain/zero/1.0>.
|
|
37
|
+
Names and marks remain the property of their respective owners.
|
|
38
|
+
-->
|
|
39
|
+
<path fill="currentColor" stroke="none" d="M5.53 2.13 0 7.75h5.53zm.398 0v5.62h7.608v3.65l5.47-4.45c-.014-1.22.031-2.25-.025-3.46-.148-1.09-1.287-1.47-2.236-1.36zM23.1 4.32c-.802.295-1.358.995-2.047 1.49-2.506 2.05-4.982 4.12-7.468 6.19 3.025 2.59 6.04 5.18 9.065 7.76 1.218.671 1.428-.814 1.328-1.64v-13a.828.828 0 0 0-.877-.825zM.038 8.15v7.7h5.53v-7.7zm13.577 8.1H6.008v5.62c3.864-.006 7.737.011 11.58-.009 1.02-.07 1.618-1.12 1.468-2.07v-2.51l-5.47-4.68v3.65zm-13.577 0c.02 1.44-.041 2.88.033 4.31.162.948 1.158 1.43 2.047 1.31h3.464v-5.62z" />
|
|
40
|
+
</svg>
|
package/assets/icon.png
ADDED
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as GoogleMeetBrowserManualActionError, t as GOOGLE_MEET_BROWSER_NODE_ADAPTER } from "./google-meet-platform-constants-Bs5iAg3E.
|
|
1
|
+
import { r as GoogleMeetBrowserManualActionError, t as GOOGLE_MEET_BROWSER_NODE_ADAPTER } from "./google-meet-platform-constants-Bs5iAg3E.mjs";
|
|
2
2
|
import { sleep } from "openclaw/plugin-sdk/runtime-env";
|
|
3
3
|
import { asMeetingBrowserTabs, callMeetingBrowserProxyOnNode, readMeetingBrowserTab, resolveMeetingBrowserNode, resolveMeetingBrowserNodeInfo } from "openclaw/plugin-sdk/meeting-runtime";
|
|
4
4
|
//#region extensions/google-meet/src/transports/chrome-browser-proxy.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { a as resolveGoogleMeetTokenFromParams, c as buildGoogleMeetPreflightReport, d as fetchGoogleMeetSpace, f as fetchLatestGoogleMeetConferenceRecord, i as resolveArtifactQueryFromParams, l as createGoogleMeetSpace, m as listGoogleMeetCalendarEvents, n as fetchResolvedGoogleMeetAttendance, o as resolveMeetingFromParams, p as buildGoogleMeetCalendarDayWindow, s as resolveSpaceFromParams, t as fetchResolvedGoogleMeetArtifacts, u as endGoogleMeetActiveConference } from "./plugin-helpers
|
|
2
|
-
import { i as resolveGoogleMeetGatewayOperationTimeoutMs } from "./config-C-6enWkx.
|
|
3
|
-
import { buildGoogleMeetAuthUrl, exchangeGoogleMeetAuthCode, resolveGoogleMeetAccessToken, waitForGoogleMeetAuthCode } from "./oauth-
|
|
4
|
-
import { n as hasCreateSpaceConfigInput, r as resolveCreateSpaceConfig } from "./create-
|
|
1
|
+
import { a as resolveGoogleMeetTokenFromParams, c as buildGoogleMeetPreflightReport, d as fetchGoogleMeetSpace, f as fetchLatestGoogleMeetConferenceRecord, i as resolveArtifactQueryFromParams, l as createGoogleMeetSpace, m as listGoogleMeetCalendarEvents, n as fetchResolvedGoogleMeetAttendance, o as resolveMeetingFromParams, p as buildGoogleMeetCalendarDayWindow, s as resolveSpaceFromParams, t as fetchResolvedGoogleMeetArtifacts, u as endGoogleMeetActiveConference } from "./plugin-helpers--7X3icub.mjs";
|
|
2
|
+
import { i as resolveGoogleMeetGatewayOperationTimeoutMs } from "./config-C-6enWkx.mjs";
|
|
3
|
+
import { buildGoogleMeetAuthUrl, exchangeGoogleMeetAuthCode, resolveGoogleMeetAccessToken, waitForGoogleMeetAuthCode } from "./oauth-22Ey-zCb.mjs";
|
|
4
|
+
import { n as hasCreateSpaceConfigInput, r as resolveCreateSpaceConfig } from "./create-CG9Pgwsb.mjs";
|
|
5
5
|
import { clampTimerTimeoutMs, parseStrictNonNegativeInteger, parseStrictPositiveInteger } from "openclaw/plugin-sdk/number-runtime";
|
|
6
6
|
import { callGatewayFromCli, isGatewayClientRequestError, isGatewayTransportError } from "openclaw/plugin-sdk/gateway-runtime";
|
|
7
7
|
import { generateHexPkceVerifierChallenge } from "openclaw/plugin-sdk/provider-auth";
|
|
@@ -254,53 +254,57 @@ function writeLeaveResult(sessionId, result) {
|
|
|
254
254
|
}
|
|
255
255
|
//#endregion
|
|
256
256
|
//#region extensions/google-meet/src/cli-export.ts
|
|
257
|
-
function
|
|
258
|
-
|
|
259
|
-
if (result.
|
|
260
|
-
|
|
257
|
+
function renderArtifactsSummary(result) {
|
|
258
|
+
const lines = [];
|
|
259
|
+
if (result.input) lines.push(`input: ${result.input}`);
|
|
260
|
+
if (result.space) lines.push(`space: ${result.space.name}`);
|
|
261
|
+
lines.push(`conference records: ${result.conferenceRecords.length}`);
|
|
261
262
|
for (const entry of result.artifacts) {
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
if (entry.smartNotesError)
|
|
272
|
-
for (const recording of entry.recordings)
|
|
263
|
+
lines.push("");
|
|
264
|
+
lines.push(`record: ${entry.conferenceRecord.name}`);
|
|
265
|
+
lines.push(`started: ${formatOptional(entry.conferenceRecord.startTime)}`);
|
|
266
|
+
lines.push(`ended: ${formatOptional(entry.conferenceRecord.endTime)}`);
|
|
267
|
+
lines.push(`participants: ${entry.participants.length}`);
|
|
268
|
+
lines.push(`recordings: ${entry.recordings.length}`);
|
|
269
|
+
lines.push(`transcripts: ${entry.transcripts.length}`);
|
|
270
|
+
lines.push(`transcript entries: ${entry.transcriptEntries.reduce((count, transcript) => count + transcript.entries.length, 0)}`);
|
|
271
|
+
lines.push(`smart notes: ${entry.smartNotes.length}`);
|
|
272
|
+
if (entry.smartNotesError) lines.push(`smart notes warning: ${entry.smartNotesError}`);
|
|
273
|
+
for (const recording of entry.recordings) lines.push(`- recording: ${recording.name}`);
|
|
273
274
|
for (const transcript of entry.transcripts) {
|
|
274
|
-
|
|
275
|
-
if (transcript.documentTextError)
|
|
275
|
+
lines.push(`- transcript: ${transcript.name}`);
|
|
276
|
+
if (transcript.documentTextError) lines.push(`- transcript document body warning: ${transcript.documentTextError}`);
|
|
276
277
|
}
|
|
277
|
-
for (const transcriptEntries of entry.transcriptEntries) if (transcriptEntries.entriesError)
|
|
278
|
+
for (const transcriptEntries of entry.transcriptEntries) if (transcriptEntries.entriesError) lines.push(`- transcript entries warning: ${transcriptEntries.transcript}: ${transcriptEntries.entriesError}`);
|
|
278
279
|
for (const smartNote of entry.smartNotes) {
|
|
279
|
-
|
|
280
|
-
if (smartNote.documentTextError)
|
|
280
|
+
lines.push(`- smart note: ${smartNote.name}`);
|
|
281
|
+
if (smartNote.documentTextError) lines.push(`- smart note document body warning: ${smartNote.documentTextError}`);
|
|
281
282
|
}
|
|
282
283
|
}
|
|
284
|
+
return `${lines.join("\n")}\n`;
|
|
283
285
|
}
|
|
284
|
-
function
|
|
285
|
-
|
|
286
|
-
if (result.
|
|
287
|
-
|
|
288
|
-
|
|
286
|
+
function renderAttendanceSummary(result) {
|
|
287
|
+
const lines = [];
|
|
288
|
+
if (result.input) lines.push(`input: ${result.input}`);
|
|
289
|
+
if (result.space) lines.push(`space: ${result.space.name}`);
|
|
290
|
+
lines.push(`conference records: ${result.conferenceRecords.length}`);
|
|
291
|
+
lines.push(`attendance rows: ${result.attendance.length}`);
|
|
289
292
|
for (const row of result.attendance) {
|
|
290
293
|
const identity = row.displayName || row.user || row.participant;
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
for (const session of row.sessions)
|
|
294
|
+
lines.push("");
|
|
295
|
+
lines.push(`participant: ${identity}`);
|
|
296
|
+
lines.push(`record: ${row.conferenceRecord}`);
|
|
297
|
+
lines.push(`resource: ${row.participant}`);
|
|
298
|
+
lines.push(`participants merged: ${row.participants?.length ?? 1}`);
|
|
299
|
+
lines.push(`first joined: ${formatOptional(row.firstJoinTime ?? row.earliestStartTime)}`);
|
|
300
|
+
lines.push(`last left: ${formatOptional(row.lastLeaveTime ?? row.latestEndTime)}`);
|
|
301
|
+
lines.push(`duration: ${formatDuration(row.durationMs)}`);
|
|
302
|
+
lines.push(`late: ${row.late ? formatDuration(row.lateByMs) : "no"}`);
|
|
303
|
+
lines.push(`early leave: ${row.earlyLeave ? formatDuration(row.earlyLeaveByMs) : "no"}`);
|
|
304
|
+
lines.push(`sessions: ${row.sessions.length}`);
|
|
305
|
+
for (const session of row.sessions) lines.push(`- ${session.name}: ${formatOptional(session.startTime)} -> ${formatOptional(session.endTime)}`);
|
|
303
306
|
}
|
|
307
|
+
return `${lines.join("\n")}\n`;
|
|
304
308
|
}
|
|
305
309
|
function writeLatestConferenceRecordSummary(result) {
|
|
306
310
|
writeStdoutLine("input: %s", result.input);
|
|
@@ -666,42 +670,31 @@ function registerGoogleMeetArtifactCommands(context) {
|
|
|
666
670
|
addGoogleMeetArtifactOptions(root.command("artifacts").description("List Meet conference records and available participant/artifact metadata")).option("--no-transcript-entries", "Skip structured transcript entry lookup").option("--include-doc-bodies", "Export linked transcript and smart-note Google Docs text").option("--format <format>", "Output format: summary or markdown", "summary").option("--output <path>", "Write output to a file instead of stdout").option("--json", "Print JSON output", false).action(async (options) => {
|
|
667
671
|
const resolved = await resolveCliArtifactQuery(params, options);
|
|
668
672
|
const result = await fetchResolvedGoogleMeetArtifacts(resolved);
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
if (options.format === "
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
}
|
|
680
|
-
if (options.format && options.format !== "summary") throw new Error("Unsupported format. Expected summary or markdown.");
|
|
681
|
-
writeArtifactsSummary(result);
|
|
682
|
-
writeStdoutLine("token source: %s", resolveTokenSource(resolved.token.refreshed));
|
|
673
|
+
const tokenSource = resolveTokenSource(resolved.token.refreshed);
|
|
674
|
+
let text;
|
|
675
|
+
if (options.json) text = JSON.stringify({
|
|
676
|
+
...result,
|
|
677
|
+
tokenSource
|
|
678
|
+
}, null, 2);
|
|
679
|
+
else if (options.format === "markdown") text = renderArtifactsMarkdown(result);
|
|
680
|
+
else if (!options.format || options.format === "summary") text = `${renderArtifactsSummary(result)}token source: ${tokenSource}\n`;
|
|
681
|
+
else throw new Error("Unsupported format. Expected summary or markdown.");
|
|
682
|
+
await writeCliOutput(options, text);
|
|
683
683
|
});
|
|
684
684
|
addGoogleMeetArtifactOptions(root.command("attendance").description("List Meet participants and participant sessions")).option("--no-merge-duplicates", "Keep duplicate participant resources as separate rows").option("--late-after-minutes <n>", "Mark participants late after this many minutes", "5").option("--early-before-minutes <n>", "Mark early leavers before this many minutes", "5").option("--format <format>", "Output format: summary, markdown, or csv", "summary").option("--output <path>", "Write output to a file instead of stdout").option("--json", "Print JSON output", false).action(async (options) => {
|
|
685
685
|
const resolved = await resolveCliArtifactQuery(params, options);
|
|
686
686
|
const result = await fetchResolvedGoogleMeetAttendance(resolved);
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
if (options.format === "
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
if (options.format === "csv") {
|
|
699
|
-
await writeCliOutput(options, renderAttendanceCsv(result));
|
|
700
|
-
return;
|
|
701
|
-
}
|
|
702
|
-
if (options.format && options.format !== "summary") throw new Error("Unsupported format. Expected summary, markdown, or csv.");
|
|
703
|
-
writeAttendanceSummary(result);
|
|
704
|
-
writeStdoutLine("token source: %s", resolveTokenSource(resolved.token.refreshed));
|
|
687
|
+
const tokenSource = resolveTokenSource(resolved.token.refreshed);
|
|
688
|
+
let text;
|
|
689
|
+
if (options.json) text = JSON.stringify({
|
|
690
|
+
...result,
|
|
691
|
+
tokenSource
|
|
692
|
+
}, null, 2);
|
|
693
|
+
else if (options.format === "markdown") text = renderAttendanceMarkdown(result);
|
|
694
|
+
else if (options.format === "csv") text = renderAttendanceCsv(result);
|
|
695
|
+
else if (!options.format || options.format === "summary") text = `${renderAttendanceSummary(result)}token source: ${tokenSource}\n`;
|
|
696
|
+
else throw new Error("Unsupported format. Expected summary, markdown, or csv.");
|
|
697
|
+
await writeCliOutput(options, text);
|
|
705
698
|
});
|
|
706
699
|
addGoogleMeetArtifactOptions(root.command("export").description("Write Meet artifacts, attendance, transcript, and raw JSON into a folder")).option("--no-transcript-entries", "Skip structured transcript entry lookup").option("--include-doc-bodies", "Export linked transcript and smart-note Google Docs text").option("--no-merge-duplicates", "Keep duplicate participant resources as separate rows").option("--late-after-minutes <n>", "Mark participants late after this many minutes", "5").option("--early-before-minutes <n>", "Mark early leavers before this many minutes", "5").option("--output <dir>", "Output directory").option("--zip", "Also write a portable .zip archive").option("--dry-run", "Fetch export data and print the manifest without writing files", false).option("--json", "Print JSON output", false).action(async (options) => {
|
|
707
700
|
const resolved = await resolveCliArtifactQuery(params, options);
|
|
@@ -1040,13 +1033,7 @@ function registerGoogleMeetLifecycleCommands(context) {
|
|
|
1040
1033
|
method: "googlemeet.leave",
|
|
1041
1034
|
payload: { sessionId }
|
|
1042
1035
|
});
|
|
1043
|
-
|
|
1044
|
-
const result = delegated.payload;
|
|
1045
|
-
if (!result.found) throw new Error("session not found");
|
|
1046
|
-
writeLeaveResult(sessionId, result);
|
|
1047
|
-
return;
|
|
1048
|
-
}
|
|
1049
|
-
const result = await (await params.ensureRuntime()).leave(sessionId);
|
|
1036
|
+
const result = delegated.ok ? delegated.payload : await (await params.ensureRuntime()).leave(sessionId);
|
|
1050
1037
|
if (!result.found) throw new Error("session not found");
|
|
1051
1038
|
writeLeaveResult(sessionId, result);
|
|
1052
1039
|
});
|
|
@@ -1059,14 +1046,7 @@ function registerGoogleMeetLifecycleCommands(context) {
|
|
|
1059
1046
|
message
|
|
1060
1047
|
}
|
|
1061
1048
|
});
|
|
1062
|
-
|
|
1063
|
-
const result = delegated.payload;
|
|
1064
|
-
if (!result.found) throw new Error("session not found");
|
|
1065
|
-
if (!result.spoken) throw new Error(result.session?.chrome?.health?.speechBlockedMessage ?? "session has no active realtime audio bridge");
|
|
1066
|
-
writeStdoutLine("speaking on %s", sessionId);
|
|
1067
|
-
return;
|
|
1068
|
-
}
|
|
1069
|
-
const result = await (await params.ensureRuntime()).speak(sessionId, message);
|
|
1049
|
+
const result = delegated.ok ? delegated.payload : await (await params.ensureRuntime()).speak(sessionId, message);
|
|
1070
1050
|
if (!result.found) throw new Error("session not found");
|
|
1071
1051
|
if (!result.spoken) throw new Error(result.session?.chrome?.health?.speechBlockedMessage ?? "session has no active realtime audio bridge");
|
|
1072
1052
|
writeStdoutLine("speaking on %s", sessionId);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { h as __exportAll, l as createGoogleMeetSpace } from "./plugin-helpers
|
|
2
|
-
import { resolveGoogleMeetAccessToken } from "./oauth-
|
|
3
|
-
import { t as createMeetWithBrowserProxyOnNode } from "./chrome-create-
|
|
1
|
+
import { h as __exportAll, l as createGoogleMeetSpace } from "./plugin-helpers--7X3icub.mjs";
|
|
2
|
+
import { resolveGoogleMeetAccessToken } from "./oauth-22Ey-zCb.mjs";
|
|
3
|
+
import { t as createMeetWithBrowserProxyOnNode } from "./chrome-create-BZRBHJp9.mjs";
|
|
4
4
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
5
|
//#region extensions/google-meet/src/create.ts
|
|
6
6
|
var create_exports = /* @__PURE__ */ __exportAll({
|
|
@@ -1,14 +1,28 @@
|
|
|
1
|
-
import { n as GOOGLE_MEET_NODE_COMMAND } from "./google-meet-platform-constants-Bs5iAg3E.
|
|
2
|
-
import { t as normalizeMeetUrl } from "./meet-url-BP2Jlvjs.
|
|
3
|
-
import { a as isSameMeetUrlForReuse, i as isRecoverableMeetTab, n as forceMeetEnglishUi, o as normalizeMeetUrlForReuse, r as isEnglishMeetTab, s as readMeetAuthUser, t as createMeetWithBrowserProxyOnNode } from "./chrome-create-
|
|
1
|
+
import { n as GOOGLE_MEET_NODE_COMMAND } from "./google-meet-platform-constants-Bs5iAg3E.mjs";
|
|
2
|
+
import { t as normalizeMeetUrl } from "./meet-url-BP2Jlvjs.mjs";
|
|
3
|
+
import { a as isSameMeetUrlForReuse, i as isRecoverableMeetTab, n as forceMeetEnglishUi, o as normalizeMeetUrlForReuse, r as isEnglishMeetTab, s as readMeetAuthUser, t as createMeetWithBrowserProxyOnNode } from "./chrome-create-BZRBHJp9.mjs";
|
|
4
4
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
5
|
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
|
6
6
|
import { MeetingPlatformAdapter } from "openclaw/plugin-sdk/meeting-runtime";
|
|
7
|
+
import { createMeetingBrowserAudioCaptureSource } from "openclaw/plugin-sdk/meeting-page-script-runtime";
|
|
7
8
|
//#region extensions/google-meet/src/transports/types.ts
|
|
8
9
|
const GOOGLE_MEET_TRANSCRIPT_MAX_LINES = 2e3;
|
|
9
10
|
//#endregion
|
|
10
11
|
//#region extensions/google-meet/src/transports/google-meet-page-scripts.ts
|
|
11
12
|
const GOOGLE_MEET_CAPTION_SETTLE_MS = 1e3;
|
|
13
|
+
function meetAudioCaptureScript(params) {
|
|
14
|
+
return createMeetingBrowserAudioCaptureSource({
|
|
15
|
+
...params,
|
|
16
|
+
ownershipSource: `
|
|
17
|
+
const expectedUrl = ${JSON.stringify(normalizeMeetUrlForReuse(params.meetingUrl))};
|
|
18
|
+
const currentUrl = new URL(location.href);
|
|
19
|
+
return Boolean(expectedUrl && window.__openclawMeetAudioSession === sessionId &&
|
|
20
|
+
currentUrl.origin + currentUrl.pathname.toLowerCase().replace(/[/]$/, "") === expectedUrl &&
|
|
21
|
+
[...document.querySelectorAll("button")].some((button) =>
|
|
22
|
+
/leave call/i.test(button.getAttribute("aria-label") || button.textContent || "")));
|
|
23
|
+
`
|
|
24
|
+
});
|
|
25
|
+
}
|
|
12
26
|
function meetStatusScript(params) {
|
|
13
27
|
return `async () => {
|
|
14
28
|
const text = (node) => (node?.innerText || node?.textContent || "").trim();
|
|
@@ -256,7 +270,21 @@ function meetStatusScript(params) {
|
|
|
256
270
|
: null;
|
|
257
271
|
if (join) join.click();
|
|
258
272
|
const inCall = buttons().some((button) => /leave call/i.test(button.getAttribute('aria-label') || text(button)));
|
|
273
|
+
if (!readOnly && inCall && captionSessionId) {
|
|
274
|
+
const activeCapture = window.__openclawMeetingRemoteAudio;
|
|
275
|
+
if (activeCapture && activeCapture.sessionId !== captionSessionId) {
|
|
276
|
+
return JSON.stringify({ inCall: false, manualAction: manualActionFor("meet-session-conflict", "This Meet tab belongs to another active audio session."), url: location.href, notes });
|
|
277
|
+
}
|
|
278
|
+
window.__openclawMeetAudioSession = captionSessionId;
|
|
279
|
+
}
|
|
259
280
|
const routeMeetAudioOutput = async () => {
|
|
281
|
+
const remoteCapture = window.__openclawMeetingRemoteAudio;
|
|
282
|
+
if (remoteCapture && remoteCapture.sessionId === captionSessionId && remoteCapture.isCurrent()) {
|
|
283
|
+
if (!readOnly) remoteCapture.scan();
|
|
284
|
+
audioOutputRouted = remoteCapture.isCurrent();
|
|
285
|
+
audioOutputDeviceLabel = "Isolated browser playback";
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
260
288
|
if (
|
|
261
289
|
!allowMicrophone ||
|
|
262
290
|
typeof navigator === 'undefined' ||
|
|
@@ -733,6 +761,7 @@ const GOOGLE_MEET_PLATFORM_ADAPTER = MeetingPlatformAdapter.create({
|
|
|
733
761
|
}
|
|
734
762
|
},
|
|
735
763
|
browser: {
|
|
764
|
+
buildAudioCaptureScript: meetAudioCaptureScript,
|
|
736
765
|
allowsMicrophone: MeetingPlatformAdapter.isTalkBackMode,
|
|
737
766
|
buildStatusJoinScript: (params) => meetStatusScript({
|
|
738
767
|
allowMicrophone: MeetingPlatformAdapter.isTalkBackMode(params.mode),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { n as GOOGLE_MEET_NODE_COMMAND } from "./google-meet-platform-constants-Bs5iAg3E.
|
|
2
|
-
import { n as DEFAULT_GOOGLE_MEET_AUDIO_OUTPUT_COMMAND, t as DEFAULT_GOOGLE_MEET_AUDIO_INPUT_COMMAND } from "./config-C-6enWkx.
|
|
3
|
-
import { t as GOOGLE_MEET_PLATFORM_ADAPTER } from "./google-meet-platform-adapter-
|
|
1
|
+
import { n as GOOGLE_MEET_NODE_COMMAND } from "./google-meet-platform-constants-Bs5iAg3E.mjs";
|
|
2
|
+
import { n as DEFAULT_GOOGLE_MEET_AUDIO_OUTPUT_COMMAND, t as DEFAULT_GOOGLE_MEET_AUDIO_INPUT_COMMAND } from "./config-C-6enWkx.mjs";
|
|
3
|
+
import { t as GOOGLE_MEET_PLATFORM_ADAPTER } from "./google-meet-platform-adapter-DQZ74Kd5.mjs";
|
|
4
4
|
import { MeetingPlatformAdapter } from "openclaw/plugin-sdk/meeting-runtime";
|
|
5
5
|
//#region extensions/google-meet/src/node-host.ts
|
|
6
6
|
function normalizeMeetKey(value) {
|
|
@@ -13,7 +13,7 @@ function normalizeMeetKey(value) {
|
|
|
13
13
|
return value;
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
-
const
|
|
16
|
+
const handleGoogleMeetNodeHostCommand = MeetingPlatformAdapter.createNodeHostHandler({
|
|
17
17
|
commandName: GOOGLE_MEET_NODE_COMMAND,
|
|
18
18
|
displayName: "Google Meet",
|
|
19
19
|
browserLabel: "Meet",
|
|
@@ -42,8 +42,5 @@ const googleMeetNodeHost = MeetingPlatformAdapter.createNodeHostHandler({
|
|
|
42
42
|
openedNotes: ["Browser page control is handled by OpenClaw browser automation when using chrome-node."]
|
|
43
43
|
}
|
|
44
44
|
});
|
|
45
|
-
async function handleGoogleMeetNodeHostCommand(paramsJSON) {
|
|
46
|
-
return await googleMeetNodeHost(paramsJSON);
|
|
47
|
-
}
|
|
48
45
|
//#endregion
|
|
49
46
|
export { handleGoogleMeetNodeHostCommand };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as GOOGLE_MEET_NODE_COMMAND } from "./google-meet-platform-constants-Bs5iAg3E.
|
|
2
|
-
import { t as GOOGLE_MEET_PLATFORM_ADAPTER } from "./google-meet-platform-adapter-
|
|
1
|
+
import { n as GOOGLE_MEET_NODE_COMMAND } from "./google-meet-platform-constants-Bs5iAg3E.mjs";
|
|
2
|
+
import { t as GOOGLE_MEET_PLATFORM_ADAPTER } from "./google-meet-platform-adapter-DQZ74Kd5.mjs";
|
|
3
3
|
import { createMeetingBrowserNodeInvokePolicy } from "openclaw/plugin-sdk/meeting-runtime";
|
|
4
4
|
//#region extensions/google-meet/src/node-invoke-policy.ts
|
|
5
5
|
const GOOGLE_MEET_CHROME_NODE_COMMAND = GOOGLE_MEET_NODE_COMMAND;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as readGoogleApiErrorDetail } from "./google-api-errors-BDYXfKRa.
|
|
1
|
+
import { n as readGoogleApiErrorDetail } from "./google-api-errors-BDYXfKRa.mjs";
|
|
2
2
|
import { MAX_DATE_TIMESTAMP_MS, resolveDateTimestampMs, resolveExpiresAtMsFromDurationSeconds } from "openclaw/plugin-sdk/number-runtime";
|
|
3
3
|
import { parseOAuthCallbackInput, waitForLocalOAuthCallback } from "openclaw/plugin-sdk/provider-auth-runtime";
|
|
4
4
|
import { readProviderJsonResponse } from "openclaw/plugin-sdk/provider-http";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { c as loadGoogleMeetCliModule, p as resolveMeetingInput } from "./plugin-registration-
|
|
2
|
-
import { t as googleApiError } from "./google-api-errors-BDYXfKRa.
|
|
3
|
-
import { t as normalizeMeetUrl } from "./meet-url-BP2Jlvjs.
|
|
1
|
+
import { c as loadGoogleMeetCliModule, p as resolveMeetingInput } from "./plugin-registration-B3LXKV4R.mjs";
|
|
2
|
+
import { t as googleApiError } from "./google-api-errors-BDYXfKRa.mjs";
|
|
3
|
+
import { t as normalizeMeetUrl } from "./meet-url-BP2Jlvjs.mjs";
|
|
4
4
|
import { normalizeOptionalString, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
5
|
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
|
6
6
|
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
@@ -773,7 +773,7 @@ var plugin_helpers_exports = /* @__PURE__ */ __exportAll({
|
|
|
773
773
|
resolveMeetingFromParams: () => resolveMeetingFromParams,
|
|
774
774
|
resolveSpaceFromParams: () => resolveSpaceFromParams
|
|
775
775
|
});
|
|
776
|
-
const loadGoogleMeetCreateModule = createLazyRuntimeModule(() => import("./create-
|
|
776
|
+
const loadGoogleMeetCreateModule = createLazyRuntimeModule(() => import("./create-CG9Pgwsb.mjs").then((n) => n.t));
|
|
777
777
|
async function createMeetFromParams(params) {
|
|
778
778
|
return (await loadGoogleMeetCreateModule()).createMeetFromParams(params);
|
|
779
779
|
}
|
|
@@ -781,7 +781,7 @@ async function createAndJoinMeetFromParams(params) {
|
|
|
781
781
|
return (await loadGoogleMeetCreateModule()).createAndJoinMeetFromParams(params);
|
|
782
782
|
}
|
|
783
783
|
async function resolveGoogleMeetTokenFromParams(config, raw) {
|
|
784
|
-
const { resolveGoogleMeetAccessToken } = await import("./oauth-
|
|
784
|
+
const { resolveGoogleMeetAccessToken } = await import("./oauth-22Ey-zCb.mjs");
|
|
785
785
|
return resolveGoogleMeetAccessToken({
|
|
786
786
|
clientId: normalizeOptionalString(raw.clientId) ?? config.oauth.clientId,
|
|
787
787
|
clientSecret: normalizeOptionalString(raw.clientSecret) ?? config.oauth.clientSecret,
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { i as isGoogleMeetBrowserManualActionError, n as GOOGLE_MEET_NODE_COMMAND } from "./google-meet-platform-constants-Bs5iAg3E.
|
|
2
|
-
import { i as resolveGoogleMeetGatewayOperationTimeoutMs } from "./config-C-6enWkx.
|
|
1
|
+
import { i as isGoogleMeetBrowserManualActionError, n as GOOGLE_MEET_NODE_COMMAND } from "./google-meet-platform-constants-Bs5iAg3E.mjs";
|
|
2
|
+
import { i as resolveGoogleMeetGatewayOperationTimeoutMs } from "./config-C-6enWkx.mjs";
|
|
3
3
|
import { asNonArrayRecord as asParamRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
4
4
|
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
|
5
5
|
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
6
6
|
//#region extensions/google-meet/src/plugin-registration.ts
|
|
7
|
-
const loadGoogleMeetPluginHelpers = createLazyRuntimeModule(() => import("./plugin-helpers
|
|
8
|
-
const loadGoogleMeetCliModule = createLazyRuntimeModule(() => import("./cli-
|
|
9
|
-
const loadGoogleMeetNodeHostModule = createLazyRuntimeModule(() => import("./node-host-
|
|
10
|
-
const loadGoogleMeetRuntimeModule = createLazyRuntimeModule(() => import("./runtime-
|
|
11
|
-
const loadGoogleMeetNodeInvokePolicyModule = createLazyRuntimeModule(() => import("./node-invoke-policy-
|
|
7
|
+
const loadGoogleMeetPluginHelpers = createLazyRuntimeModule(() => import("./plugin-helpers--7X3icub.mjs").then((n) => n.r));
|
|
8
|
+
const loadGoogleMeetCliModule = createLazyRuntimeModule(() => import("./cli-CbxqjjTC.mjs"));
|
|
9
|
+
const loadGoogleMeetNodeHostModule = createLazyRuntimeModule(() => import("./node-host-BUrsParx.mjs"));
|
|
10
|
+
const loadGoogleMeetRuntimeModule = createLazyRuntimeModule(() => import("./runtime-BuIZ5e3V.mjs"));
|
|
11
|
+
const loadGoogleMeetNodeInvokePolicyModule = createLazyRuntimeModule(() => import("./node-invoke-policy-hwXq9MfV.mjs"));
|
|
12
12
|
const loadGoogleMeetGatewayRuntimeModule = createLazyRuntimeModule(() => import("openclaw/plugin-sdk/gateway-runtime"));
|
|
13
13
|
const loadGoogleMeetNodeInvokePolicy = async (config) => (await loadGoogleMeetNodeInvokePolicyModule()).createGoogleMeetChromeNodeInvokePolicy(config);
|
|
14
14
|
function normalizeTransport(value) {
|
|
@@ -83,15 +83,34 @@ function keepTrustedToolAgentId(raw, client) {
|
|
|
83
83
|
} : rest;
|
|
84
84
|
}
|
|
85
85
|
function createGoogleMeetRuntimeAccessor(params) {
|
|
86
|
+
let transcriptsEnabled = params.api.config.transcripts?.enabled !== false;
|
|
87
|
+
let runtime;
|
|
86
88
|
let runtimePromise;
|
|
89
|
+
params.api.registerService({
|
|
90
|
+
id: "google-meet-transcripts",
|
|
91
|
+
reload: { configPrefixes: ["transcripts.enabled"] },
|
|
92
|
+
start: ({ config }) => {
|
|
93
|
+
transcriptsEnabled = config.transcripts?.enabled !== false;
|
|
94
|
+
return runtime?.reconcileTranscriptPolicy(transcriptsEnabled);
|
|
95
|
+
},
|
|
96
|
+
stop: () => {
|
|
97
|
+
transcriptsEnabled = false;
|
|
98
|
+
return runtime?.reconcileTranscriptPolicy(false);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
87
101
|
return async () => {
|
|
88
102
|
if (!params.config.enabled) throw new Error("Google Meet plugin disabled in plugin config");
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
103
|
+
runtimePromise ??= loadGoogleMeetRuntimeModule().then(async ({ GoogleMeetRuntime: Runtime }) => {
|
|
104
|
+
runtime = new Runtime({
|
|
105
|
+
config: params.config,
|
|
106
|
+
fullConfig: params.api.config,
|
|
107
|
+
runtime: params.api.runtime,
|
|
108
|
+
logger: params.api.logger
|
|
109
|
+
});
|
|
110
|
+
await runtime.reconcileTranscriptPolicy(transcriptsEnabled);
|
|
111
|
+
return runtime;
|
|
112
|
+
});
|
|
113
|
+
return await runtimePromise;
|
|
95
114
|
};
|
|
96
115
|
}
|
|
97
116
|
function createLazyGoogleMeetNodeInvokePolicy(config, loadPolicy = loadGoogleMeetNodeInvokePolicy) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { n as GOOGLE_MEET_NODE_COMMAND, t as GOOGLE_MEET_BROWSER_NODE_ADAPTER } from "./google-meet-platform-constants-Bs5iAg3E.
|
|
2
|
-
import { t as normalizeMeetUrl } from "./meet-url-BP2Jlvjs.
|
|
3
|
-
import { c as callBrowserProxyOnNode, l as resolveChromeNode, u as resolveChromeNodeInfo } from "./chrome-create-
|
|
4
|
-
import { n as normalizeDialInNumber, t as GOOGLE_MEET_PLATFORM_ADAPTER } from "./google-meet-platform-adapter-
|
|
1
|
+
import { n as GOOGLE_MEET_NODE_COMMAND, t as GOOGLE_MEET_BROWSER_NODE_ADAPTER } from "./google-meet-platform-constants-Bs5iAg3E.mjs";
|
|
2
|
+
import { t as normalizeMeetUrl } from "./meet-url-BP2Jlvjs.mjs";
|
|
3
|
+
import { c as callBrowserProxyOnNode, l as resolveChromeNode, u as resolveChromeNodeInfo } from "./chrome-create-BZRBHJp9.mjs";
|
|
4
|
+
import { n as normalizeDialInNumber, t as GOOGLE_MEET_PLATFORM_ADAPTER } from "./google-meet-platform-adapter-DQZ74Kd5.mjs";
|
|
5
5
|
import { asOptionalRecord, asRecord, normalizeOptionalString, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
6
6
|
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
|
7
7
|
import { GatewayClient, startGatewayClientWhenEventLoopReady } from "openclaw/plugin-sdk/gateway-runtime";
|
|
@@ -482,6 +482,9 @@ var GoogleMeetRuntime = class {
|
|
|
482
482
|
#createdBrowserTabs;
|
|
483
483
|
#voiceCallGateway;
|
|
484
484
|
#sessions;
|
|
485
|
+
reconcileTranscriptPolicy(enabled) {
|
|
486
|
+
return this.#sessions.reconcileTranscriptPolicy(enabled);
|
|
487
|
+
}
|
|
485
488
|
constructor(params) {
|
|
486
489
|
this.params = params;
|
|
487
490
|
this.#createdBrowserTabs = /* @__PURE__ */ new Map();
|
|
@@ -561,6 +564,7 @@ var GoogleMeetRuntime = class {
|
|
|
561
564
|
speakViaTransport: async (session, instructions) => await this.#speakViaTransport(session, instructions),
|
|
562
565
|
durableTranscripts: {
|
|
563
566
|
config: params.fullConfig.transcripts,
|
|
567
|
+
openclawConfig: params.fullConfig,
|
|
564
568
|
providerId: "google-meet",
|
|
565
569
|
providerName: "Google Meet"
|
|
566
570
|
}
|
package/dist/cli-metadata.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as GOOGLE_MEET_CLI_DESCRIPTOR } from "
|
|
1
|
+
import { t as GOOGLE_MEET_CLI_DESCRIPTOR } from "./.setup/cli-output-mode-BwH_6tH8.mjs";
|
|
2
2
|
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
|
|
3
3
|
//#region extensions/google-meet/cli-metadata.ts
|
|
4
4
|
var cli_metadata_default = definePluginEntry({
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { t as GOOGLE_MEET_CLI_DESCRIPTOR } from "
|
|
2
|
-
import { n as GOOGLE_MEET_NODE_COMMAND } from "
|
|
3
|
-
import { r as resolveGoogleMeetConfig } from "
|
|
4
|
-
import { a as createLazyGoogleMeetNodeInvokePolicy, c as loadGoogleMeetCliModule, d as normalizeMode, f as normalizeTransport, h as shouldJoinCreatedMeet, i as createGoogleMeetRuntimeAccessor, l as loadGoogleMeetNodeHostModule, m as sendGoogleMeetGatewayError, n as assertGoogleMeetAgentToolActionSupported, o as formatGoogleMeetGatewayError, p as resolveMeetingInput, r as callGoogleMeetGatewayFromTool, s as keepTrustedToolAgentId, t as asParamRecord, u as loadGoogleMeetPluginHelpers } from "
|
|
1
|
+
import { t as GOOGLE_MEET_CLI_DESCRIPTOR } from "./.setup/cli-output-mode-BwH_6tH8.mjs";
|
|
2
|
+
import { n as GOOGLE_MEET_NODE_COMMAND } from "./.setup/google-meet-platform-constants-Bs5iAg3E.mjs";
|
|
3
|
+
import { r as resolveGoogleMeetConfig } from "./.setup/config-C-6enWkx.mjs";
|
|
4
|
+
import { a as createLazyGoogleMeetNodeInvokePolicy, c as loadGoogleMeetCliModule, d as normalizeMode, f as normalizeTransport, h as shouldJoinCreatedMeet, i as createGoogleMeetRuntimeAccessor, l as loadGoogleMeetNodeHostModule, m as sendGoogleMeetGatewayError, n as assertGoogleMeetAgentToolActionSupported, o as formatGoogleMeetGatewayError, p as resolveMeetingInput, r as callGoogleMeetGatewayFromTool, s as keepTrustedToolAgentId, t as asParamRecord, u as loadGoogleMeetPluginHelpers } from "./.setup/plugin-registration-B3LXKV4R.mjs";
|
|
5
5
|
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
|
|
6
6
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
7
7
|
import { jsonResult } from "openclaw/plugin-sdk/tool-results";
|
|
@@ -357,11 +357,16 @@ var google_meet_default = definePluginEntry({
|
|
|
357
357
|
}
|
|
358
358
|
}
|
|
359
359
|
}), { name: "google_meet" });
|
|
360
|
+
let nodeHost;
|
|
360
361
|
api.registerNodeHostCommand({
|
|
361
362
|
command: GOOGLE_MEET_NODE_COMMAND,
|
|
362
363
|
cap: "google-meet",
|
|
363
364
|
dangerous: true,
|
|
364
|
-
|
|
365
|
+
hasActiveWork: () => nodeHost?.handleGoogleMeetNodeHostCommand.hasActiveWork() ?? false,
|
|
366
|
+
handle: async (paramsJSON) => {
|
|
367
|
+
nodeHost ??= await loadGoogleMeetNodeHostModule();
|
|
368
|
+
return await nodeHost.handleGoogleMeetNodeHostCommand(paramsJSON);
|
|
369
|
+
}
|
|
365
370
|
});
|
|
366
371
|
api.registerNodeInvokePolicy(createLazyGoogleMeetNodeInvokePolicy(config));
|
|
367
372
|
api.registerCli(async ({ program }) => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
github: Stuk
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
name: Set up workspace
|
|
2
|
+
description: Sets up the workspace by installing Node.js and dependencies.
|
|
3
|
+
|
|
4
|
+
inputs:
|
|
5
|
+
node-version:
|
|
6
|
+
description: The Node.js version to install.
|
|
7
|
+
required: false
|
|
8
|
+
default: "lts/*"
|
|
9
|
+
|
|
10
|
+
runs:
|
|
11
|
+
using: composite
|
|
12
|
+
steps:
|
|
13
|
+
- name: Install Node.js
|
|
14
|
+
uses: actions/setup-node@v4
|
|
15
|
+
with:
|
|
16
|
+
node-version: ${{ inputs.node-version }}
|
|
17
|
+
cache: npm
|
|
18
|
+
|
|
19
|
+
- name: Install dependencies
|
|
20
|
+
# Because the lockfile is not compatible between all supported Node.js versions we need to run `npm install`.
|
|
21
|
+
# When support for older versions of Node.js is dropped, this can be changed to `npm ci`.
|
|
22
|
+
run: npm install
|
|
23
|
+
shell: bash
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
name: Benchmark
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches: [main]
|
|
5
|
+
jobs:
|
|
6
|
+
benchmark:
|
|
7
|
+
name: Run benchmark
|
|
8
|
+
runs-on: ubuntu-latest
|
|
9
|
+
steps:
|
|
10
|
+
- name: Checkout repository
|
|
11
|
+
uses: actions/checkout@v4
|
|
12
|
+
|
|
13
|
+
- name: Set up workspace
|
|
14
|
+
uses: ./.github/actions/setup
|
|
15
|
+
|
|
16
|
+
- name: Install browsers
|
|
17
|
+
run: npx playwright install --with-deps
|
|
18
|
+
|
|
19
|
+
- name: Run benchmark
|
|
20
|
+
run: npm run benchmark | tee benchmark.txt
|
|
21
|
+
|
|
22
|
+
- name: Download previous benchmark data
|
|
23
|
+
uses: actions/cache@v4
|
|
24
|
+
with:
|
|
25
|
+
path: ./cache
|
|
26
|
+
key: ${{ runner.os }}-benchmark
|
|
27
|
+
|
|
28
|
+
- name: Store benchmark result
|
|
29
|
+
uses: benchmark-action/github-action-benchmark@v1
|
|
30
|
+
with:
|
|
31
|
+
tool: benchmarkjs
|
|
32
|
+
output-file-path: benchmark.txt
|
|
33
|
+
external-data-json-path: ./cache/benchmark-data.json
|
|
34
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
35
|
+
alert-threshold: 150%
|
|
36
|
+
comment-on-alert: true
|
|
37
|
+
fail-on-alert: true
|
|
38
|
+
alert-comment-cc-users: "@Stuk"
|