@openclaw/google-meet 2026.7.1-beta.2 → 2026.7.1-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chrome-create-C1akZT_q.js → chrome-create-BhgM0jQO.js} +6 -5
- package/dist/{cli-BXICNPAs.js → cli-D364Yrym.js} +4 -4
- package/dist/{config-D_YKxh0m.js → config-DDYRr7-P.js} +2 -1
- package/dist/{create-CHlW2v6-.js → create-CkkaRlbI.js} +4 -3
- package/dist/index.js +177 -141
- package/dist/{oauth-DK1mwF2i.js → oauth-75iPDzIn.js} +6 -3
- package/node_modules/commander/Readme.md +11 -15
- package/node_modules/commander/index.js +14 -17
- package/node_modules/commander/lib/argument.js +3 -6
- package/node_modules/commander/lib/command.js +46 -33
- package/node_modules/commander/lib/error.js +2 -5
- package/node_modules/commander/lib/help.js +4 -20
- package/node_modules/commander/lib/option.js +3 -6
- package/node_modules/commander/lib/suggestSimilar.js +2 -4
- package/node_modules/commander/package.json +10 -28
- package/node_modules/commander/typings/index.d.ts +3 -3
- package/node_modules/typebox/build/compile/validator.d.mts +2 -7
- package/node_modules/typebox/build/compile/validator.mjs +6 -36
- package/node_modules/typebox/build/error/errors.d.mts +1 -7
- package/node_modules/typebox/build/format/_idna.mjs +36 -6
- package/node_modules/typebox/build/format/_puny.mjs +4 -1
- package/node_modules/typebox/build/format/uuid.d.mts +2 -2
- package/node_modules/typebox/build/format/uuid.mjs +3 -3
- package/node_modules/typebox/build/guard/emit.d.mts +0 -4
- package/node_modules/typebox/build/guard/emit.mjs +0 -8
- package/node_modules/typebox/build/guard/guard.d.mts +4 -8
- package/node_modules/typebox/build/guard/guard.mjs +5 -13
- package/node_modules/typebox/build/schema/engine/boolean.d.mts +3 -3
- package/node_modules/typebox/build/schema/engine/boolean.mjs +4 -4
- package/node_modules/typebox/build/schema/engine/index.d.mts +0 -1
- package/node_modules/typebox/build/schema/engine/index.mjs +0 -1
- package/node_modules/typebox/build/schema/engine/schema.mjs +5 -10
- package/node_modules/typebox/build/schema/engine/type.mjs +14 -18
- package/node_modules/typebox/build/schema/types/dependencies.mjs +1 -1
- package/node_modules/typebox/build/schema/types/index.d.mts +0 -1
- package/node_modules/typebox/build/schema/types/index.mjs +0 -1
- package/node_modules/typebox/build/schema/types/schema.d.mts +1 -1
- package/node_modules/typebox/build/schema/types/schema.mjs +2 -2
- package/node_modules/typebox/build/system/locale/ar_001.mjs +0 -1
- package/node_modules/typebox/build/system/locale/bn_BD.mjs +0 -1
- package/node_modules/typebox/build/system/locale/cs_CZ.mjs +0 -1
- package/node_modules/typebox/build/system/locale/de_DE.mjs +0 -1
- package/node_modules/typebox/build/system/locale/el_GR.mjs +0 -1
- package/node_modules/typebox/build/system/locale/en_US.mjs +0 -1
- package/node_modules/typebox/build/system/locale/es_419.mjs +0 -1
- package/node_modules/typebox/build/system/locale/es_AR.mjs +0 -1
- package/node_modules/typebox/build/system/locale/es_ES.mjs +0 -1
- package/node_modules/typebox/build/system/locale/es_MX.mjs +0 -1
- package/node_modules/typebox/build/system/locale/fa_IR.mjs +0 -1
- package/node_modules/typebox/build/system/locale/fil_PH.mjs +0 -1
- package/node_modules/typebox/build/system/locale/fr_CA.mjs +0 -1
- package/node_modules/typebox/build/system/locale/fr_FR.mjs +0 -1
- package/node_modules/typebox/build/system/locale/ha_NG.mjs +0 -1
- package/node_modules/typebox/build/system/locale/hi_IN.mjs +0 -1
- package/node_modules/typebox/build/system/locale/hu_HU.mjs +0 -1
- package/node_modules/typebox/build/system/locale/id_ID.mjs +0 -1
- package/node_modules/typebox/build/system/locale/it_IT.mjs +0 -1
- package/node_modules/typebox/build/system/locale/ja_JP.mjs +0 -1
- package/node_modules/typebox/build/system/locale/ko_KR.mjs +0 -1
- package/node_modules/typebox/build/system/locale/ms_MY.mjs +0 -1
- package/node_modules/typebox/build/system/locale/nl_NL.mjs +0 -1
- package/node_modules/typebox/build/system/locale/pl_PL.mjs +0 -1
- package/node_modules/typebox/build/system/locale/pt_BR.mjs +0 -1
- package/node_modules/typebox/build/system/locale/pt_PT.mjs +0 -1
- package/node_modules/typebox/build/system/locale/ro_RO.mjs +0 -1
- package/node_modules/typebox/build/system/locale/ru_RU.mjs +0 -1
- package/node_modules/typebox/build/system/locale/sv_SE.mjs +0 -1
- package/node_modules/typebox/build/system/locale/sw_TZ.mjs +0 -1
- package/node_modules/typebox/build/system/locale/th_TH.mjs +0 -1
- package/node_modules/typebox/build/system/locale/tr_TR.mjs +0 -1
- package/node_modules/typebox/build/system/locale/uk_UA.mjs +0 -1
- package/node_modules/typebox/build/system/locale/ur_PK.mjs +0 -1
- package/node_modules/typebox/build/system/locale/vi_VN.mjs +0 -1
- package/node_modules/typebox/build/system/locale/yo_NG.mjs +0 -1
- package/node_modules/typebox/build/system/locale/zh_Hans.mjs +0 -1
- package/node_modules/typebox/build/system/locale/zh_Hant.mjs +0 -1
- package/node_modules/typebox/build/system/memory/clone.d.mts +2 -3
- package/node_modules/typebox/build/system/memory/clone.mjs +73 -26
- package/node_modules/typebox/build/system/settings/settings.d.mts +15 -0
- package/node_modules/typebox/build/system/settings/settings.mjs +3 -1
- package/node_modules/typebox/build/type/action/_add_immutable.d.mts +11 -0
- package/node_modules/typebox/build/type/action/_add_immutable.mjs +11 -0
- package/node_modules/typebox/build/type/action/_add_optional.d.mts +11 -0
- package/node_modules/typebox/build/type/action/_add_optional.mjs +11 -0
- package/node_modules/typebox/build/type/action/_add_readonly.d.mts +11 -0
- package/node_modules/typebox/build/type/action/_add_readonly.mjs +11 -0
- package/node_modules/typebox/build/type/action/_remove_immutable.d.mts +11 -0
- package/node_modules/typebox/build/type/action/_remove_immutable.mjs +11 -0
- package/node_modules/typebox/build/type/action/_remove_optional.d.mts +11 -0
- package/node_modules/typebox/build/type/action/_remove_optional.mjs +11 -0
- package/node_modules/typebox/build/type/action/_remove_readonly.d.mts +11 -0
- package/node_modules/typebox/build/type/action/_remove_readonly.mjs +11 -0
- package/node_modules/typebox/build/type/action/conditional.d.mts +2 -3
- package/node_modules/typebox/build/type/action/conditional.mjs +2 -1
- package/node_modules/typebox/build/type/action/index.d.mts +7 -4
- package/node_modules/typebox/build/type/action/index.mjs +7 -4
- package/node_modules/typebox/build/type/action/mapped.d.mts +2 -3
- package/node_modules/typebox/build/type/action/mapped.mjs +2 -1
- package/node_modules/typebox/build/type/action/module.d.mts +8 -7
- package/node_modules/typebox/build/type/action/module.mjs +7 -6
- package/node_modules/typebox/build/type/action/readonly_object.d.mts +0 -5
- package/node_modules/typebox/build/type/action/readonly_object.mjs +0 -5
- package/node_modules/typebox/build/type/action/with.d.mts +11 -0
- package/node_modules/typebox/build/type/action/with.mjs +11 -0
- package/node_modules/typebox/build/type/engine/call/distribute_arguments.mjs +1 -1
- package/node_modules/typebox/build/type/engine/call/instantiate.d.mts +1 -3
- package/node_modules/typebox/build/type/engine/call/instantiate.mjs +3 -2
- package/node_modules/typebox/build/type/engine/call/resolve_arguments.mjs +2 -2
- package/node_modules/typebox/build/type/engine/constructor_parameters/instantiate.d.mts +3 -4
- package/node_modules/typebox/build/type/engine/constructor_parameters/instantiate.mjs +2 -1
- package/node_modules/typebox/build/type/engine/cyclic/candidates.d.mts +2 -3
- package/node_modules/typebox/build/type/engine/cyclic/candidates.mjs +3 -6
- package/node_modules/typebox/build/type/engine/cyclic/check.d.mts +6 -9
- package/node_modules/typebox/build/type/engine/cyclic/check.mjs +10 -16
- package/node_modules/typebox/build/type/engine/cyclic/dependencies.d.mts +1 -4
- package/node_modules/typebox/build/type/engine/cyclic/dependencies.mjs +9 -15
- package/node_modules/typebox/build/type/engine/cyclic/extends.d.mts +1 -4
- package/node_modules/typebox/build/type/engine/cyclic/extends.mjs +8 -14
- package/node_modules/typebox/build/type/engine/cyclic/instantiate.d.mts +2 -5
- package/node_modules/typebox/build/type/engine/cyclic/instantiate.mjs +3 -2
- package/node_modules/typebox/build/type/engine/enum/index.d.mts +0 -1
- package/node_modules/typebox/build/type/engine/enum/index.mjs +0 -1
- package/node_modules/typebox/build/type/engine/evaluate/broaden.d.mts +1 -2
- package/node_modules/typebox/build/type/engine/evaluate/broaden.mjs +2 -6
- package/node_modules/typebox/build/type/engine/evaluate/composite.d.mts +10 -6
- package/node_modules/typebox/build/type/engine/evaluate/composite.mjs +10 -6
- package/node_modules/typebox/build/type/engine/evaluate/distribute.d.mts +2 -1
- package/node_modules/typebox/build/type/engine/evaluate/distribute.mjs +3 -3
- package/node_modules/typebox/build/type/engine/evaluate/evaluate.d.mts +17 -5
- package/node_modules/typebox/build/type/engine/evaluate/evaluate.mjs +34 -8
- package/node_modules/typebox/build/type/engine/exclude/operation.d.mts +5 -6
- package/node_modules/typebox/build/type/engine/exclude/operation.mjs +11 -12
- package/node_modules/typebox/build/type/engine/extract/operation.d.mts +5 -6
- package/node_modules/typebox/build/type/engine/extract/operation.mjs +11 -12
- package/node_modules/typebox/build/type/engine/immutable/instantiate_add.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/immutable/instantiate_add.mjs +14 -0
- package/node_modules/typebox/build/type/engine/immutable/instantiate_remove.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/immutable/instantiate_remove.mjs +14 -0
- package/node_modules/typebox/build/type/engine/index.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/index.mjs +2 -2
- package/node_modules/typebox/build/type/engine/indexable/from_dependent.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/indexable/from_dependent.mjs +8 -0
- package/node_modules/typebox/build/type/engine/indexable/from_enum.d.mts +3 -3
- package/node_modules/typebox/build/type/engine/indexable/from_enum.mjs +4 -4
- package/node_modules/typebox/build/type/engine/indexable/from_template_literal.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/indexable/from_template_literal.mjs +3 -3
- package/node_modules/typebox/build/type/engine/indexable/from_type.d.mts +3 -1
- package/node_modules/typebox/build/type/engine/indexable/from_type.mjs +9 -6
- package/node_modules/typebox/build/type/engine/indexed/instantiate.d.mts +2 -1
- package/node_modules/typebox/build/type/engine/indexed/instantiate.mjs +5 -2
- package/node_modules/typebox/build/type/engine/instantiate.d.mts +44 -31
- package/node_modules/typebox/build/type/engine/instantiate.mjs +82 -83
- package/node_modules/typebox/build/type/engine/interface/instantiate.d.mts +3 -6
- package/node_modules/typebox/build/type/engine/intrinsics/from_template_literal.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/intrinsics/from_template_literal.mjs +3 -3
- package/node_modules/typebox/build/type/engine/keyof/instantiate.d.mts +2 -1
- package/node_modules/typebox/build/type/engine/keyof/instantiate.mjs +5 -1
- package/node_modules/typebox/build/type/engine/mapped/mapped_operation.d.mts +4 -4
- package/node_modules/typebox/build/type/engine/mapped/mapped_operation.mjs +3 -3
- package/node_modules/typebox/build/type/engine/mapped/mapped_variants.d.mts +5 -4
- package/node_modules/typebox/build/type/engine/mapped/mapped_variants.mjs +10 -5
- package/node_modules/typebox/build/type/engine/module/instantiate.d.mts +7 -9
- package/node_modules/typebox/build/type/engine/module/instantiate.mjs +17 -15
- package/node_modules/typebox/build/type/engine/object/from_dependent.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/object/from_dependent.mjs +8 -0
- package/node_modules/typebox/build/type/engine/object/from_type.d.mts +3 -1
- package/node_modules/typebox/build/type/engine/object/from_type.mjs +8 -5
- package/node_modules/typebox/build/type/engine/object/from_union.mjs +2 -2
- package/node_modules/typebox/build/type/engine/optional/instantiate_add.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/optional/instantiate_add.mjs +14 -0
- package/node_modules/typebox/build/type/engine/optional/instantiate_remove.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/optional/instantiate_remove.mjs +14 -0
- package/node_modules/typebox/build/type/engine/parameters/instantiate.d.mts +3 -4
- package/node_modules/typebox/build/type/engine/parameters/instantiate.mjs +2 -1
- package/node_modules/typebox/build/type/engine/partial/from_dependent.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/partial/from_dependent.mjs +8 -0
- package/node_modules/typebox/build/type/engine/partial/from_intersect.d.mts +1 -1
- package/node_modules/typebox/build/type/engine/partial/from_intersect.mjs +3 -2
- package/node_modules/typebox/build/type/engine/partial/from_object.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/partial/from_object.mjs +2 -2
- package/node_modules/typebox/build/type/engine/partial/from_type.d.mts +3 -1
- package/node_modules/typebox/build/type/engine/partial/from_type.mjs +7 -4
- package/node_modules/typebox/build/type/engine/priority/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/priority/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/priority/priority.d.mts +20 -0
- package/node_modules/typebox/build/type/engine/priority/priority.mjs +28 -0
- package/node_modules/typebox/build/type/engine/readonly/instantiate_add.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/readonly/instantiate_add.mjs +14 -0
- package/node_modules/typebox/build/type/engine/readonly/instantiate_remove.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/readonly/instantiate_remove.mjs +14 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_array.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/readonly_object/from_array.mjs +2 -2
- package/node_modules/typebox/build/type/engine/readonly_object/from_dependent.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_dependent.mjs +8 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_intersect.d.mts +1 -1
- package/node_modules/typebox/build/type/engine/readonly_object/from_intersect.mjs +3 -2
- package/node_modules/typebox/build/type/engine/readonly_object/from_object.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/readonly_object/from_object.mjs +2 -2
- package/node_modules/typebox/build/type/engine/readonly_object/from_tuple.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/readonly_object/from_tuple.mjs +2 -2
- package/node_modules/typebox/build/type/engine/readonly_object/from_type.d.mts +3 -1
- package/node_modules/typebox/build/type/engine/readonly_object/from_type.mjs +8 -5
- package/node_modules/typebox/build/type/engine/record/from_key_enum.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/record/from_key_enum.mjs +2 -2
- package/node_modules/typebox/build/type/engine/record/from_key_template_literal.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/record/from_key_template_literal.mjs +2 -2
- package/node_modules/typebox/build/type/engine/ref/instantiate.d.mts +3 -3
- package/node_modules/typebox/build/type/engine/ref/instantiate.mjs +6 -6
- package/node_modules/typebox/build/type/engine/required/from_dependent.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/required/from_dependent.mjs +8 -0
- package/node_modules/typebox/build/type/engine/required/from_intersect.d.mts +1 -1
- package/node_modules/typebox/build/type/engine/required/from_intersect.mjs +3 -2
- package/node_modules/typebox/build/type/engine/required/from_object.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/required/from_object.mjs +2 -2
- package/node_modules/typebox/build/type/engine/required/from_type.d.mts +3 -1
- package/node_modules/typebox/build/type/engine/required/from_type.mjs +7 -4
- package/node_modules/typebox/build/type/engine/template_literal/decode.mjs +3 -3
- package/node_modules/typebox/build/type/engine/template_literal/encode.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/template_literal/encode.mjs +6 -6
- package/node_modules/typebox/build/type/engine/template_literal/is_finite.mjs +1 -1
- package/node_modules/typebox/build/type/engine/template_literal/is_pattern.mjs +1 -0
- package/node_modules/typebox/build/type/engine/this/expand_this.d.mts +1 -4
- package/node_modules/typebox/build/type/engine/this/expand_this.mjs +7 -13
- package/node_modules/typebox/build/type/engine/with/instantiate.d.mts +8 -0
- package/node_modules/typebox/build/type/engine/{options → with}/instantiate.mjs +5 -5
- package/node_modules/typebox/build/type/extends/dependent.d.mts +6 -0
- package/node_modules/typebox/build/type/extends/dependent.mjs +6 -0
- package/node_modules/typebox/build/type/extends/enum.d.mts +4 -4
- package/node_modules/typebox/build/type/extends/enum.mjs +3 -2
- package/node_modules/typebox/build/type/extends/extends_left.d.mts +5 -7
- package/node_modules/typebox/build/type/extends/extends_left.mjs +24 -27
- package/node_modules/typebox/build/type/extends/extends_right.d.mts +7 -5
- package/node_modules/typebox/build/type/extends/extends_right.mjs +20 -15
- package/node_modules/typebox/build/type/extends/inference.mjs +1 -1
- package/node_modules/typebox/build/type/extends/object.d.mts +8 -1
- package/node_modules/typebox/build/type/extends/object.mjs +25 -3
- package/node_modules/typebox/build/type/extends/parameters.mjs +2 -2
- package/node_modules/typebox/build/type/extends/record.d.mts +13 -0
- package/node_modules/typebox/build/type/extends/record.mjs +23 -0
- package/node_modules/typebox/build/type/extends/template_literal.d.mts +3 -3
- package/node_modules/typebox/build/type/extends/template_literal.mjs +3 -3
- package/node_modules/typebox/build/type/extends/tuple.d.mts +3 -6
- package/node_modules/typebox/build/type/extends/tuple.mjs +6 -5
- package/node_modules/typebox/build/type/extends/union.mjs +2 -2
- package/node_modules/typebox/build/type/script/mapping.d.mts +84 -99
- package/node_modules/typebox/build/type/script/mapping.mjs +81 -85
- package/node_modules/typebox/build/type/script/parser.d.mts +40 -40
- package/node_modules/typebox/build/type/script/parser.mjs +22 -22
- package/node_modules/typebox/build/type/script/script.d.mts +3 -4
- package/node_modules/typebox/build/type/script/script.mjs +3 -2
- package/node_modules/typebox/build/type/script/token/internal/guard.d.mts +1 -1
- package/node_modules/typebox/build/type/script/token/internal/guard.mjs +1 -1
- package/node_modules/typebox/build/type/script/token/internal/take.mjs +1 -1
- package/node_modules/typebox/build/type/script/token/until.mjs +2 -2
- package/node_modules/typebox/build/type/types/_codec.d.mts +12 -12
- package/node_modules/typebox/build/type/types/_codec.mjs +0 -1
- package/node_modules/typebox/build/type/types/_immutable.d.mts +2 -9
- package/node_modules/typebox/build/type/types/_immutable.mjs +2 -10
- package/node_modules/typebox/build/type/types/_optional.d.mts +2 -9
- package/node_modules/typebox/build/type/types/_optional.mjs +2 -11
- package/node_modules/typebox/build/type/types/_readonly.d.mts +2 -9
- package/node_modules/typebox/build/type/types/_readonly.mjs +2 -10
- package/node_modules/typebox/build/type/types/_refine.d.mts +8 -10
- package/node_modules/typebox/build/type/types/_refine.mjs +1 -2
- package/node_modules/typebox/build/type/types/call.d.mts +3 -3
- package/node_modules/typebox/build/type/types/call.mjs +3 -2
- package/node_modules/typebox/build/type/types/deferred.d.mts +1 -0
- package/node_modules/typebox/build/type/types/deferred.mjs +1 -1
- package/node_modules/typebox/build/type/types/dependent.d.mts +17 -0
- package/node_modules/typebox/build/type/types/dependent.mjs +24 -0
- package/node_modules/typebox/build/type/types/enum.d.mts +3 -1
- package/node_modules/typebox/build/type/types/enum.mjs +5 -0
- package/node_modules/typebox/build/type/types/index.d.mts +1 -4
- package/node_modules/typebox/build/type/types/index.mjs +1 -4
- package/node_modules/typebox/build/type/types/number.d.mts +1 -1
- package/node_modules/typebox/build/type/types/number.mjs +1 -1
- package/node_modules/typebox/build/type/types/record.d.mts +13 -7
- package/node_modules/typebox/build/type/types/record.mjs +15 -9
- package/node_modules/typebox/build/type/types/static.d.mts +2 -5
- package/node_modules/typebox/build/typebox.d.mts +4 -8
- package/node_modules/typebox/build/typebox.mjs +4 -8
- package/node_modules/typebox/build/value/clean/clean.mjs +4 -2
- package/node_modules/typebox/build/value/clean/from_intersect.mjs +2 -2
- package/node_modules/typebox/build/value/clean/from_type.mjs +8 -10
- package/node_modules/typebox/build/value/clean/from_union.d.mts +1 -1
- package/node_modules/typebox/build/value/clean/from_union.mjs +1 -2
- package/node_modules/typebox/build/value/clone/clone.mjs +2 -73
- package/node_modules/typebox/build/value/codec/decode.mjs +4 -2
- package/node_modules/typebox/build/value/codec/encode.mjs +4 -2
- package/node_modules/typebox/build/value/codec/from_array.mjs +1 -4
- package/node_modules/typebox/build/value/codec/from_object.mjs +1 -4
- package/node_modules/typebox/build/value/codec/from_record.mjs +2 -7
- package/node_modules/typebox/build/value/codec/from_tuple.mjs +1 -4
- package/node_modules/typebox/build/value/codec/from_union.mjs +2 -3
- package/node_modules/typebox/build/value/convert/from_enum.mjs +3 -4
- package/node_modules/typebox/build/value/convert/from_template_literal.d.mts +1 -1
- package/node_modules/typebox/build/value/convert/from_template_literal.mjs +2 -3
- package/node_modules/typebox/build/value/convert/from_type.mjs +19 -21
- package/node_modules/typebox/build/value/create/from_enum.mjs +2 -2
- package/node_modules/typebox/build/value/create/from_type.mjs +23 -31
- package/node_modules/typebox/build/value/default/from_object.mjs +1 -1
- package/node_modules/typebox/build/value/default/from_type.mjs +8 -10
- package/node_modules/typebox/build/value/index.d.mts +0 -1
- package/node_modules/typebox/build/value/index.mjs +0 -1
- package/node_modules/typebox/build/value/repair/from_enum.mjs +2 -3
- package/node_modules/typebox/build/value/repair/from_type.mjs +24 -22
- package/node_modules/typebox/build/value/shared/union_priority_sort.d.mts +6 -2
- package/node_modules/typebox/build/value/shared/union_priority_sort.mjs +62 -26
- package/node_modules/typebox/build/value/value.d.mts +0 -1
- package/node_modules/typebox/build/value/value.mjs +0 -1
- package/node_modules/typebox/package.json +25 -25
- package/node_modules/typebox/readme.md +97 -80
- package/npm-shrinkwrap.json +12 -12
- package/package.json +6 -6
- package/node_modules/commander/esm.mjs +0 -16
- package/node_modules/commander/typings/esm.d.mts +0 -3
- package/node_modules/typebox/build/schema/engine/_guard.d.mts +0 -6
- package/node_modules/typebox/build/schema/engine/_guard.mjs +0 -26
- package/node_modules/typebox/build/schema/types/_guard.d.mts +0 -10
- package/node_modules/typebox/build/schema/types/_guard.mjs +0 -16
- package/node_modules/typebox/build/type/action/_optional.d.mts +0 -19
- package/node_modules/typebox/build/type/action/_optional.mjs +0 -40
- package/node_modules/typebox/build/type/action/_readonly.d.mts +0 -19
- package/node_modules/typebox/build/type/action/_readonly.mjs +0 -40
- package/node_modules/typebox/build/type/action/awaited.d.mts +0 -15
- package/node_modules/typebox/build/type/action/awaited.mjs +0 -15
- package/node_modules/typebox/build/type/action/options.d.mts +0 -11
- package/node_modules/typebox/build/type/action/options.mjs +0 -11
- package/node_modules/typebox/build/type/engine/awaited/instantiate.d.mts +0 -11
- package/node_modules/typebox/build/type/engine/awaited/instantiate.mjs +0 -20
- package/node_modules/typebox/build/type/engine/enum/enum_to_union.d.mts +0 -14
- package/node_modules/typebox/build/type/engine/enum/enum_to_union.mjs +0 -24
- package/node_modules/typebox/build/type/engine/options/index.d.mts +0 -1
- package/node_modules/typebox/build/type/engine/options/index.mjs +0 -1
- package/node_modules/typebox/build/type/engine/options/instantiate.d.mts +0 -8
- package/node_modules/typebox/build/type/extends/async_iterator.d.mts +0 -7
- package/node_modules/typebox/build/type/extends/async_iterator.mjs +0 -9
- package/node_modules/typebox/build/type/extends/iterator.d.mts +0 -7
- package/node_modules/typebox/build/type/extends/iterator.mjs +0 -9
- package/node_modules/typebox/build/type/extends/promise.d.mts +0 -7
- package/node_modules/typebox/build/type/extends/promise.mjs +0 -9
- package/node_modules/typebox/build/type/types/async_iterator.d.mts +0 -20
- package/node_modules/typebox/build/type/types/async_iterator.mjs +0 -28
- package/node_modules/typebox/build/type/types/base.d.mts +0 -50
- package/node_modules/typebox/build/type/types/base.mjs +0 -84
- package/node_modules/typebox/build/type/types/iterator.d.mts +0 -20
- package/node_modules/typebox/build/type/types/iterator.mjs +0 -28
- package/node_modules/typebox/build/type/types/promise.d.mts +0 -21
- package/node_modules/typebox/build/type/types/promise.mjs +0 -29
- package/node_modules/typebox/build/value/clean/from_base.d.mts +0 -2
- package/node_modules/typebox/build/value/clean/from_base.mjs +0 -4
- package/node_modules/typebox/build/value/convert/from_base.d.mts +0 -2
- package/node_modules/typebox/build/value/convert/from_base.mjs +0 -4
- package/node_modules/typebox/build/value/create/from_async_iterator.d.mts +0 -2
- package/node_modules/typebox/build/value/create/from_async_iterator.mjs +0 -5
- package/node_modules/typebox/build/value/create/from_base.d.mts +0 -2
- package/node_modules/typebox/build/value/create/from_base.mjs +0 -4
- package/node_modules/typebox/build/value/create/from_iterator.d.mts +0 -2
- package/node_modules/typebox/build/value/create/from_iterator.mjs +0 -5
- package/node_modules/typebox/build/value/create/from_promise.d.mts +0 -2
- package/node_modules/typebox/build/value/create/from_promise.mjs +0 -5
- package/node_modules/typebox/build/value/default/from_base.d.mts +0 -2
- package/node_modules/typebox/build/value/default/from_base.mjs +0 -5
- package/node_modules/typebox/build/value/mutate/error.d.mts +0 -3
- package/node_modules/typebox/build/value/mutate/error.mjs +0 -6
- package/node_modules/typebox/build/value/mutate/from_array.d.mts +0 -2
- package/node_modules/typebox/build/value/mutate/from_array.mjs +0 -16
- package/node_modules/typebox/build/value/mutate/from_object.d.mts +0 -2
- package/node_modules/typebox/build/value/mutate/from_object.mjs +0 -40
- package/node_modules/typebox/build/value/mutate/from_unknown.d.mts +0 -2
- package/node_modules/typebox/build/value/mutate/from_unknown.mjs +0 -7
- package/node_modules/typebox/build/value/mutate/from_value.d.mts +0 -2
- package/node_modules/typebox/build/value/mutate/from_value.mjs +0 -12
- package/node_modules/typebox/build/value/mutate/index.d.mts +0 -1
- package/node_modules/typebox/build/value/mutate/index.mjs +0 -1
- package/node_modules/typebox/build/value/mutate/mutate.d.mts +0 -11
- package/node_modules/typebox/build/value/mutate/mutate.mjs +0 -41
- package/node_modules/typebox/build/value/repair/from_base.d.mts +0 -2
- package/node_modules/typebox/build/value/repair/from_base.mjs +0 -8
- /package/node_modules/typebox/build/type/engine/{awaited → with}/index.d.mts +0 -0
- /package/node_modules/typebox/build/type/engine/{awaited → with}/index.mjs +0 -0
package/dist/index.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { a as buildGoogleMeetCalendarDayWindow, i as resolveGoogleMeetGatewayOperationTimeoutMs, n as DEFAULT_GOOGLE_MEET_AUDIO_OUTPUT_COMMAND, o as findGoogleMeetCalendarEvent, r as resolveGoogleMeetConfig, s as listGoogleMeetCalendarEvents, t as DEFAULT_GOOGLE_MEET_AUDIO_INPUT_COMMAND } from "./config-
|
|
2
|
-
import { _ as fetchLatestGoogleMeetConferenceRecord, a as forceMeetEnglishUi, c as readBrowserTab, d as buildGoogleMeetPreflightReport, g as fetchGoogleMeetSpace, h as fetchGoogleMeetAttendance, i as callBrowserProxyOnNode, l as resolveChromeNode, m as fetchGoogleMeetArtifacts, n as isGoogleMeetBrowserManualActionError, o as isSameMeetUrlForReuse, p as endGoogleMeetActiveConference, r as asBrowserTabs, s as normalizeMeetUrlForReuse, t as createMeetWithBrowserProxyOnNode, u as resolveChromeNodeInfo } from "./chrome-create-
|
|
1
|
+
import { a as buildGoogleMeetCalendarDayWindow, i as resolveGoogleMeetGatewayOperationTimeoutMs, n as DEFAULT_GOOGLE_MEET_AUDIO_OUTPUT_COMMAND, o as findGoogleMeetCalendarEvent, r as resolveGoogleMeetConfig, s as listGoogleMeetCalendarEvents, t as DEFAULT_GOOGLE_MEET_AUDIO_INPUT_COMMAND } from "./config-DDYRr7-P.js";
|
|
2
|
+
import { _ as fetchLatestGoogleMeetConferenceRecord, a as forceMeetEnglishUi, c as readBrowserTab, d as buildGoogleMeetPreflightReport, g as fetchGoogleMeetSpace, h as fetchGoogleMeetAttendance, i as callBrowserProxyOnNode, l as resolveChromeNode, m as fetchGoogleMeetArtifacts, n as isGoogleMeetBrowserManualActionError, o as isSameMeetUrlForReuse, p as endGoogleMeetActiveConference, r as asBrowserTabs, s as normalizeMeetUrlForReuse, t as createMeetWithBrowserProxyOnNode, u as resolveChromeNodeInfo } from "./chrome-create-BhgM0jQO.js";
|
|
3
3
|
import { optionalPositiveIntegerSchema, readPositiveIntegerParam } from "openclaw/plugin-sdk/channel-actions";
|
|
4
4
|
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
|
5
5
|
import { ErrorCodes, GatewayClient, callGatewayFromCli, errorShape, startGatewayClientWhenEventLoopReady } from "openclaw/plugin-sdk/gateway-runtime";
|
|
6
6
|
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
7
7
|
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
|
|
8
|
+
import { normalizeAgentId } from "openclaw/plugin-sdk/routing";
|
|
8
9
|
import { asRecord, normalizeOptionalString, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
10
|
+
import { jsonResult } from "openclaw/plugin-sdk/tool-results";
|
|
9
11
|
import { Type } from "typebox";
|
|
10
12
|
import { isBlockedHostnameOrIp } from "openclaw/plugin-sdk/ssrf-runtime";
|
|
11
13
|
import { addTimerTimeoutGraceMs } from "openclaw/plugin-sdk/number-runtime";
|
|
@@ -17,7 +19,6 @@ import { sleep } from "openclaw/plugin-sdk/runtime-env";
|
|
|
17
19
|
import fs from "node:fs";
|
|
18
20
|
import os from "node:os";
|
|
19
21
|
import path from "node:path";
|
|
20
|
-
import { normalizeAgentId } from "openclaw/plugin-sdk/routing";
|
|
21
22
|
import { getRealtimeTranscriptionProvider, listRealtimeTranscriptionProviders } from "openclaw/plugin-sdk/realtime-transcription";
|
|
22
23
|
//#region extensions/google-meet/src/transports/chrome-audio-device.ts
|
|
23
24
|
const GOOGLE_MEET_SYSTEM_PROFILER_COMMAND = "/usr/sbin/system_profiler";
|
|
@@ -963,6 +964,8 @@ async function startCommandAgentAudioBridge(params) {
|
|
|
963
964
|
inputProcess.stderr?.on("data", (chunk) => {
|
|
964
965
|
params.logger.debug?.(`[google-meet] audio input: ${String(chunk).trim()}`);
|
|
965
966
|
});
|
|
967
|
+
inputProcess.stdout?.on("error", fail("audio input command stdout"));
|
|
968
|
+
inputProcess.stderr?.on("error", fail("audio input command stderr"));
|
|
966
969
|
outputProcess.on("error", fail("audio output command"));
|
|
967
970
|
outputProcess.stdin?.on?.("error", fail("audio output command"));
|
|
968
971
|
outputProcess.on("exit", (code, signal) => {
|
|
@@ -974,6 +977,7 @@ async function startCommandAgentAudioBridge(params) {
|
|
|
974
977
|
outputProcess.stderr?.on("data", (chunk) => {
|
|
975
978
|
params.logger.debug?.(`[google-meet] audio output: ${String(chunk).trim()}`);
|
|
976
979
|
});
|
|
980
|
+
outputProcess.stderr?.on("error", fail("audio output command stderr"));
|
|
977
981
|
const writeOutputAudio = (audio) => {
|
|
978
982
|
const suppression = recordGoogleMeetOutputActivity({
|
|
979
983
|
tracker: outputActivity,
|
|
@@ -1242,6 +1246,10 @@ async function startCommandRealtimeAudioBridge(params) {
|
|
|
1242
1246
|
proc.stderr?.on("data", (chunk) => {
|
|
1243
1247
|
params.logger.debug?.(`[google-meet] audio output: ${String(chunk).trim()}`);
|
|
1244
1248
|
});
|
|
1249
|
+
proc.stderr?.on("error", (error) => {
|
|
1250
|
+
if (proc !== outputProcess) return;
|
|
1251
|
+
fail("audio output command stderr")(error);
|
|
1252
|
+
});
|
|
1245
1253
|
};
|
|
1246
1254
|
const clearOutputPlayback = () => {
|
|
1247
1255
|
if (stopped) return;
|
|
@@ -1288,9 +1296,15 @@ async function startCommandRealtimeAudioBridge(params) {
|
|
|
1288
1296
|
if (beforeClearCount === clearCount) clearOutputPlayback();
|
|
1289
1297
|
params.logger.debug?.(`[google-meet] human barge-in detected by local input (rms=${Math.round(stats.rms)}, peak=${stats.peak})`);
|
|
1290
1298
|
});
|
|
1299
|
+
bargeInInputProcess.stdout?.on("error", (error) => {
|
|
1300
|
+
params.logger.warn(`[google-meet] human barge-in input stdout failed: ${formatErrorMessage(error)}`);
|
|
1301
|
+
});
|
|
1291
1302
|
bargeInInputProcess.stderr?.on("data", (chunk) => {
|
|
1292
1303
|
params.logger.debug?.(`[google-meet] barge-in input: ${String(chunk).trim()}`);
|
|
1293
1304
|
});
|
|
1305
|
+
bargeInInputProcess.stderr?.on("error", (error) => {
|
|
1306
|
+
params.logger.warn(`[google-meet] human barge-in input stderr failed: ${formatErrorMessage(error)}`);
|
|
1307
|
+
});
|
|
1294
1308
|
bargeInInputProcess.on("error", (error) => {
|
|
1295
1309
|
params.logger.warn(`[google-meet] human barge-in input failed: ${formatErrorMessage(error)}`);
|
|
1296
1310
|
});
|
|
@@ -1309,6 +1323,8 @@ async function startCommandRealtimeAudioBridge(params) {
|
|
|
1309
1323
|
inputProcess.stderr?.on("data", (chunk) => {
|
|
1310
1324
|
params.logger.debug?.(`[google-meet] audio input: ${String(chunk).trim()}`);
|
|
1311
1325
|
});
|
|
1326
|
+
inputProcess.stdout?.on("error", fail("audio input command stdout"));
|
|
1327
|
+
inputProcess.stderr?.on("error", fail("audio input command stderr"));
|
|
1312
1328
|
const resolved = resolveGoogleMeetRealtimeProvider({
|
|
1313
1329
|
config: params.config,
|
|
1314
1330
|
fullConfig: params.fullConfig,
|
|
@@ -2968,93 +2984,88 @@ async function createConnectedGatewayClient(config) {
|
|
|
2968
2984
|
});
|
|
2969
2985
|
return client;
|
|
2970
2986
|
}
|
|
2987
|
+
function createVoiceCallGateway(params) {
|
|
2988
|
+
if (!params.config.voiceCall.gatewayUrl) return {
|
|
2989
|
+
trustedPluginIdentity: true,
|
|
2990
|
+
request: (method, requestParams) => params.runtime.gateway.request(method, requestParams, { timeoutMs: params.config.voiceCall.requestTimeoutMs })
|
|
2991
|
+
};
|
|
2992
|
+
return {
|
|
2993
|
+
trustedPluginIdentity: false,
|
|
2994
|
+
async request(method, requestParams) {
|
|
2995
|
+
const client = await createConnectedGatewayClient(params.config);
|
|
2996
|
+
try {
|
|
2997
|
+
return await client.request(method, requestParams, { timeoutMs: params.config.voiceCall.requestTimeoutMs });
|
|
2998
|
+
} finally {
|
|
2999
|
+
await client.stopAndWait({ timeoutMs: 1e3 });
|
|
3000
|
+
}
|
|
3001
|
+
}
|
|
3002
|
+
};
|
|
3003
|
+
}
|
|
2971
3004
|
function isVoiceCallMissingError(error) {
|
|
2972
3005
|
const message = formatErrorMessage(error).toLowerCase();
|
|
2973
3006
|
return message.includes("call not found") || message.includes("call is not active");
|
|
2974
3007
|
}
|
|
2975
3008
|
async function joinMeetViaVoiceCallGateway(params) {
|
|
2976
|
-
|
|
2977
|
-
|
|
2978
|
-
|
|
2979
|
-
|
|
2980
|
-
|
|
2981
|
-
|
|
2982
|
-
|
|
2983
|
-
|
|
2984
|
-
|
|
2985
|
-
|
|
2986
|
-
|
|
2987
|
-
|
|
2988
|
-
|
|
2989
|
-
|
|
2990
|
-
|
|
2991
|
-
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
|
|
2995
|
-
|
|
2996
|
-
await sleep(delayMs);
|
|
2997
|
-
}
|
|
2998
|
-
let spoken;
|
|
2999
|
-
try {
|
|
3000
|
-
spoken = await client.request("voicecall.speak", {
|
|
3001
|
-
callId: start.callId,
|
|
3002
|
-
allowTwimlFallback: false,
|
|
3003
|
-
message: params.message
|
|
3004
|
-
}, { timeoutMs: params.config.voiceCall.requestTimeoutMs });
|
|
3005
|
-
} catch (err) {
|
|
3006
|
-
params.logger?.warn?.(`[google-meet] Skipped intro speech because realtime bridge was not ready: ${formatErrorMessage(err)}`);
|
|
3007
|
-
spoken = { success: false };
|
|
3008
|
-
}
|
|
3009
|
-
if (spoken.success === false) params.logger?.warn?.(`[google-meet] Skipped intro speech because realtime bridge was not ready: ${spoken.error || "voicecall.speak failed"}`);
|
|
3010
|
-
else {
|
|
3011
|
-
introSent = true;
|
|
3012
|
-
params.logger?.info(`[google-meet] Intro speech requested after Meet dial sequence: callId=${start.callId}`);
|
|
3013
|
-
}
|
|
3009
|
+
if (params.agentId && params.agentId !== "main" && !params.gateway.trustedPluginIdentity) throw new Error("Per-agent Voice Call routing requires the local Gateway runtime. Remove google-meet voiceCall.gatewayUrl or omit agent routing.");
|
|
3010
|
+
params.logger?.info(`[google-meet] Delegating Twilio join to Voice Call (dtmf=${params.dtmfSequence ? "pre-connect" : "none"}, intro=${params.message ? "delayed" : "none"})`);
|
|
3011
|
+
const start = await params.gateway.request("voicecall.start", {
|
|
3012
|
+
to: params.dialInNumber,
|
|
3013
|
+
mode: "conversation",
|
|
3014
|
+
...params.dtmfSequence ? { dtmfSequence: params.dtmfSequence } : {},
|
|
3015
|
+
...params.requesterSessionKey ? { requesterSessionKey: params.requesterSessionKey } : {},
|
|
3016
|
+
...params.agentId && params.gateway.trustedPluginIdentity ? { agentId: params.agentId } : {},
|
|
3017
|
+
...params.sessionKey ? { sessionKey: params.sessionKey } : {}
|
|
3018
|
+
});
|
|
3019
|
+
if (!start.callId) throw new Error(start.error || "voicecall.start did not return callId");
|
|
3020
|
+
params.logger?.info(`[google-meet] Voice Call Twilio phone leg started: callId=${start.callId}`);
|
|
3021
|
+
const dtmfSent = Boolean(params.dtmfSequence);
|
|
3022
|
+
if (dtmfSent) params.logger?.info(`[google-meet] Meet DTMF queued before realtime connect: callId=${start.callId} digits=${params.dtmfSequence?.length ?? 0}`);
|
|
3023
|
+
let introSent = false;
|
|
3024
|
+
if (params.message) {
|
|
3025
|
+
const delayMs = params.dtmfSequence ? params.config.voiceCall.postDtmfSpeechDelayMs : 0;
|
|
3026
|
+
if (delayMs > 0) {
|
|
3027
|
+
params.logger?.info(`[google-meet] Waiting ${delayMs}ms after Meet DTMF before speaking intro for callId=${start.callId}`);
|
|
3028
|
+
await sleep(delayMs);
|
|
3014
3029
|
}
|
|
3015
|
-
|
|
3016
|
-
callId: start.callId,
|
|
3017
|
-
dtmfSent,
|
|
3018
|
-
introSent
|
|
3019
|
-
};
|
|
3020
|
-
} finally {
|
|
3021
|
-
await client?.stopAndWait({ timeoutMs: 1e3 });
|
|
3022
|
-
}
|
|
3023
|
-
}
|
|
3024
|
-
async function endMeetVoiceCallGatewayCall(params) {
|
|
3025
|
-
let client;
|
|
3026
|
-
try {
|
|
3027
|
-
client = await createConnectedGatewayClient(params.config);
|
|
3030
|
+
let spoken;
|
|
3028
3031
|
try {
|
|
3029
|
-
await
|
|
3032
|
+
spoken = await params.gateway.request("voicecall.speak", {
|
|
3033
|
+
callId: start.callId,
|
|
3034
|
+
allowTwimlFallback: false,
|
|
3035
|
+
message: params.message
|
|
3036
|
+
});
|
|
3030
3037
|
} catch (err) {
|
|
3031
|
-
|
|
3038
|
+
params.logger?.warn?.(`[google-meet] Skipped intro speech because realtime bridge was not ready: ${formatErrorMessage(err)}`);
|
|
3039
|
+
spoken = { success: false };
|
|
3040
|
+
}
|
|
3041
|
+
if (spoken.success === false) params.logger?.warn?.(`[google-meet] Skipped intro speech because realtime bridge was not ready: ${spoken.error || "voicecall.speak failed"}`);
|
|
3042
|
+
else {
|
|
3043
|
+
introSent = true;
|
|
3044
|
+
params.logger?.info(`[google-meet] Intro speech requested after Meet dial sequence: callId=${start.callId}`);
|
|
3032
3045
|
}
|
|
3033
|
-
} finally {
|
|
3034
|
-
await client?.stopAndWait({ timeoutMs: 1e3 });
|
|
3035
3046
|
}
|
|
3047
|
+
return {
|
|
3048
|
+
callId: start.callId,
|
|
3049
|
+
dtmfSent,
|
|
3050
|
+
introSent
|
|
3051
|
+
};
|
|
3036
3052
|
}
|
|
3037
|
-
async function
|
|
3038
|
-
let client;
|
|
3053
|
+
async function endMeetVoiceCallGatewayCall(params) {
|
|
3039
3054
|
try {
|
|
3040
|
-
|
|
3041
|
-
|
|
3042
|
-
|
|
3043
|
-
await client?.stopAndWait({ timeoutMs: 1e3 });
|
|
3055
|
+
await params.gateway.request("voicecall.end", { callId: params.callId });
|
|
3056
|
+
} catch (err) {
|
|
3057
|
+
if (!isVoiceCallMissingError(err)) throw err;
|
|
3044
3058
|
}
|
|
3045
3059
|
}
|
|
3060
|
+
async function getMeetVoiceCallGatewayCall(params) {
|
|
3061
|
+
return await params.gateway.request("voicecall.status", { callId: params.callId });
|
|
3062
|
+
}
|
|
3046
3063
|
async function speakMeetViaVoiceCallGateway(params) {
|
|
3047
|
-
|
|
3048
|
-
|
|
3049
|
-
|
|
3050
|
-
|
|
3051
|
-
|
|
3052
|
-
message: params.message
|
|
3053
|
-
}, { timeoutMs: params.config.voiceCall.requestTimeoutMs });
|
|
3054
|
-
if (spoken.success === false) throw new Error(spoken.error || "voicecall.speak failed");
|
|
3055
|
-
} finally {
|
|
3056
|
-
await client?.stopAndWait({ timeoutMs: 1e3 });
|
|
3057
|
-
}
|
|
3064
|
+
const spoken = await params.gateway.request("voicecall.speak", {
|
|
3065
|
+
callId: params.callId,
|
|
3066
|
+
message: params.message
|
|
3067
|
+
});
|
|
3068
|
+
if (spoken.success === false) throw new Error(spoken.error || "voicecall.speak failed");
|
|
3058
3069
|
}
|
|
3059
3070
|
//#endregion
|
|
3060
3071
|
//#region extensions/google-meet/src/runtime.ts
|
|
@@ -3173,8 +3184,10 @@ var GoogleMeetRuntime = class {
|
|
|
3173
3184
|
#sessionStops = /* @__PURE__ */ new Map();
|
|
3174
3185
|
#sessionSpeakers = /* @__PURE__ */ new Map();
|
|
3175
3186
|
#sessionHealth = /* @__PURE__ */ new Map();
|
|
3187
|
+
#voiceCallGateway;
|
|
3176
3188
|
constructor(params) {
|
|
3177
3189
|
this.params = params;
|
|
3190
|
+
this.#voiceCallGateway = createVoiceCallGateway(params);
|
|
3178
3191
|
}
|
|
3179
3192
|
list() {
|
|
3180
3193
|
this.#refreshHealth();
|
|
@@ -3322,9 +3335,16 @@ var GoogleMeetRuntime = class {
|
|
|
3322
3335
|
};
|
|
3323
3336
|
try {
|
|
3324
3337
|
if (transport === "chrome" || transport === "chrome-node") {
|
|
3338
|
+
const chromeConfig = request.agentId ? {
|
|
3339
|
+
...this.params.config,
|
|
3340
|
+
realtime: {
|
|
3341
|
+
...this.params.config.realtime,
|
|
3342
|
+
agentId: request.agentId
|
|
3343
|
+
}
|
|
3344
|
+
} : this.params.config;
|
|
3325
3345
|
const result = transport === "chrome-node" ? await launchChromeMeetOnNode({
|
|
3326
3346
|
runtime: this.params.runtime,
|
|
3327
|
-
config:
|
|
3347
|
+
config: chromeConfig,
|
|
3328
3348
|
fullConfig: this.params.fullConfig,
|
|
3329
3349
|
meetingSessionId: session.id,
|
|
3330
3350
|
requesterSessionKey: request.requesterSessionKey,
|
|
@@ -3333,7 +3353,7 @@ var GoogleMeetRuntime = class {
|
|
|
3333
3353
|
logger: this.params.logger
|
|
3334
3354
|
}) : await launchChromeMeet({
|
|
3335
3355
|
runtime: this.params.runtime,
|
|
3336
|
-
config:
|
|
3356
|
+
config: chromeConfig,
|
|
3337
3357
|
fullConfig: this.params.fullConfig,
|
|
3338
3358
|
meetingSessionId: session.id,
|
|
3339
3359
|
requesterSessionKey: request.requesterSessionKey,
|
|
@@ -3361,11 +3381,13 @@ var GoogleMeetRuntime = class {
|
|
|
3361
3381
|
const dtmfSequence = request.dtmfSequence || this.params.config.twilio.defaultDtmfSequence ? rawDtmfSequence : prefixDtmfWait(rawDtmfSequence, this.params.config.voiceCall.dtmfDelayMs);
|
|
3362
3382
|
const voiceCallResult = this.params.config.voiceCall.enabled ? await joinMeetViaVoiceCallGateway({
|
|
3363
3383
|
config: this.params.config,
|
|
3384
|
+
gateway: this.#voiceCallGateway,
|
|
3364
3385
|
dialInNumber,
|
|
3365
3386
|
dtmfSequence,
|
|
3366
3387
|
logger: this.params.logger,
|
|
3367
3388
|
...request.requesterSessionKey ? { requesterSessionKey: request.requesterSessionKey } : {},
|
|
3368
|
-
|
|
3389
|
+
agentId: request.agentId,
|
|
3390
|
+
sessionKey: request.agentId ? `agent:${request.agentId}:google-meet:${session.id}` : buildTwilioVoiceCallSessionKey(session.id),
|
|
3369
3391
|
message: isGoogleMeetTalkBackMode$1(mode) ? request.message ?? this.params.config.voiceCall.introMessage ?? this.params.config.realtime.introMessage : void 0
|
|
3370
3392
|
}) : void 0;
|
|
3371
3393
|
delegatedTwilioSpoken = Boolean(voiceCallResult?.introSent);
|
|
@@ -3379,7 +3401,7 @@ var GoogleMeetRuntime = class {
|
|
|
3379
3401
|
};
|
|
3380
3402
|
if (voiceCallResult?.callId) this.#sessionStops.set(session.id, async () => {
|
|
3381
3403
|
await endMeetVoiceCallGatewayCall({
|
|
3382
|
-
|
|
3404
|
+
gateway: this.#voiceCallGateway,
|
|
3383
3405
|
callId: voiceCallResult.callId
|
|
3384
3406
|
});
|
|
3385
3407
|
});
|
|
@@ -3426,7 +3448,7 @@ var GoogleMeetRuntime = class {
|
|
|
3426
3448
|
if (session.transport === "twilio" && session.twilio?.voiceCallId) {
|
|
3427
3449
|
try {
|
|
3428
3450
|
await speakMeetViaVoiceCallGateway({
|
|
3429
|
-
|
|
3451
|
+
gateway: this.#voiceCallGateway,
|
|
3430
3452
|
callId: session.twilio.voiceCallId,
|
|
3431
3453
|
message: instructions || this.params.config.voiceCall.introMessage || this.params.config.realtime.introMessage || ""
|
|
3432
3454
|
});
|
|
@@ -3620,7 +3642,7 @@ var GoogleMeetRuntime = class {
|
|
|
3620
3642
|
}
|
|
3621
3643
|
try {
|
|
3622
3644
|
if ((await getMeetVoiceCallGatewayCall({
|
|
3623
|
-
|
|
3645
|
+
gateway: this.#voiceCallGateway,
|
|
3624
3646
|
callId
|
|
3625
3647
|
})).found === false) this.#markTwilioSessionEnded(session, "Voice Call is no longer active.");
|
|
3626
3648
|
} catch (error) {
|
|
@@ -3724,7 +3746,7 @@ var GoogleMeetRuntime = class {
|
|
|
3724
3746
|
//#endregion
|
|
3725
3747
|
//#region extensions/google-meet/src/node-invoke-policy.ts
|
|
3726
3748
|
const GOOGLE_MEET_CHROME_NODE_COMMAND = "googlemeet.chrome";
|
|
3727
|
-
const START_MODES = new Set([
|
|
3749
|
+
const START_MODES = /* @__PURE__ */ new Set([
|
|
3728
3750
|
"agent",
|
|
3729
3751
|
"bidi",
|
|
3730
3752
|
"realtime",
|
|
@@ -3868,8 +3890,8 @@ function createGoogleMeetChromeNodeInvokePolicy(config) {
|
|
|
3868
3890
|
}
|
|
3869
3891
|
//#endregion
|
|
3870
3892
|
//#region extensions/google-meet/index.ts
|
|
3871
|
-
const loadGoogleMeetCreateModule = createLazyRuntimeModule(() => import("./create-
|
|
3872
|
-
const loadGoogleMeetCliModule = createLazyRuntimeModule(() => import("./cli-
|
|
3893
|
+
const loadGoogleMeetCreateModule = createLazyRuntimeModule(() => import("./create-CkkaRlbI.js"));
|
|
3894
|
+
const loadGoogleMeetCliModule = createLazyRuntimeModule(() => import("./cli-D364Yrym.js"));
|
|
3873
3895
|
const googleMeetConfigSchema = {
|
|
3874
3896
|
parse(value) {
|
|
3875
3897
|
return resolveGoogleMeetConfig(value);
|
|
@@ -4154,15 +4176,6 @@ const GoogleMeetToolSchema = Type.Object({
|
|
|
4154
4176
|
function asParamRecord(params) {
|
|
4155
4177
|
return params && typeof params === "object" && !Array.isArray(params) ? params : {};
|
|
4156
4178
|
}
|
|
4157
|
-
function json(payload) {
|
|
4158
|
-
return {
|
|
4159
|
-
content: [{
|
|
4160
|
-
type: "text",
|
|
4161
|
-
text: JSON.stringify(payload, null, 2)
|
|
4162
|
-
}],
|
|
4163
|
-
details: payload
|
|
4164
|
-
};
|
|
4165
|
-
}
|
|
4166
4179
|
function normalizeTransport(value) {
|
|
4167
4180
|
return value === "chrome" || value === "chrome-node" || value === "twilio" ? value : void 0;
|
|
4168
4181
|
}
|
|
@@ -4223,6 +4236,7 @@ function readGatewayErrorDetails(err) {
|
|
|
4223
4236
|
}
|
|
4224
4237
|
async function callGoogleMeetGatewayFromTool(params) {
|
|
4225
4238
|
try {
|
|
4239
|
+
if (params.runtime) return await params.runtime.gateway.request(googleMeetGatewayMethodForToolAction(params.action), params.raw, { timeoutMs: resolveGoogleMeetGatewayOperationTimeoutMs(params.config) });
|
|
4226
4240
|
return await googleMeetToolDeps.callGatewayFromCli(googleMeetGatewayMethodForToolAction(params.action), {
|
|
4227
4241
|
json: true,
|
|
4228
4242
|
timeout: String(resolveGoogleMeetGatewayOperationTimeoutMs(params.config))
|
|
@@ -4233,6 +4247,15 @@ async function callGoogleMeetGatewayFromTool(params) {
|
|
|
4233
4247
|
throw err;
|
|
4234
4248
|
}
|
|
4235
4249
|
}
|
|
4250
|
+
function keepTrustedToolAgentId(raw, client) {
|
|
4251
|
+
const { agentId: rawAgentId, ...rest } = raw;
|
|
4252
|
+
if (client?.internal?.pluginRuntimeOwnerId !== "google-meet") return rest;
|
|
4253
|
+
const agentId = normalizeOptionalString(rawAgentId);
|
|
4254
|
+
return agentId ? {
|
|
4255
|
+
...rest,
|
|
4256
|
+
agentId
|
|
4257
|
+
} : rest;
|
|
4258
|
+
}
|
|
4236
4259
|
async function createMeetFromParams(params) {
|
|
4237
4260
|
return (await loadGoogleMeetCreateModule()).createMeetFromParams(params);
|
|
4238
4261
|
}
|
|
@@ -4240,7 +4263,7 @@ async function createAndJoinMeetFromParams(params) {
|
|
|
4240
4263
|
return (await loadGoogleMeetCreateModule()).createAndJoinMeetFromParams(params);
|
|
4241
4264
|
}
|
|
4242
4265
|
async function resolveGoogleMeetTokenFromParams(config, raw) {
|
|
4243
|
-
const { resolveGoogleMeetAccessToken } = await import("./oauth-
|
|
4266
|
+
const { resolveGoogleMeetAccessToken } = await import("./oauth-75iPDzIn.js");
|
|
4244
4267
|
return resolveGoogleMeetAccessToken({
|
|
4245
4268
|
clientId: normalizeOptionalString(raw.clientId) ?? config.oauth.clientId,
|
|
4246
4269
|
clientSecret: normalizeOptionalString(raw.clientSecret) ?? config.oauth.clientSecret,
|
|
@@ -4397,25 +4420,27 @@ var google_meet_default = definePluginEntry({
|
|
|
4397
4420
|
const payload = formatGatewayError(err);
|
|
4398
4421
|
respond(false, payload, errorShape(code, typeof payload.error === "string" ? payload.error : "Google Meet request failed", { details: payload }));
|
|
4399
4422
|
};
|
|
4400
|
-
api.registerGatewayMethod("googlemeet.join", async ({ params, respond }) => {
|
|
4423
|
+
api.registerGatewayMethod("googlemeet.join", async ({ params, client, respond }) => {
|
|
4401
4424
|
try {
|
|
4425
|
+
const trustedParams = keepTrustedToolAgentId(asParamRecord(params), client);
|
|
4402
4426
|
respond(true, await (await ensureRuntime()).join({
|
|
4403
|
-
url: resolveMeetingInput(config,
|
|
4404
|
-
transport: normalizeTransport(
|
|
4405
|
-
mode: normalizeMode(
|
|
4406
|
-
dialInNumber: normalizeOptionalString(
|
|
4407
|
-
pin: normalizeOptionalString(
|
|
4408
|
-
dtmfSequence: normalizeOptionalString(
|
|
4409
|
-
message: normalizeOptionalString(
|
|
4410
|
-
requesterSessionKey: normalizeOptionalString(
|
|
4427
|
+
url: resolveMeetingInput(config, trustedParams.url),
|
|
4428
|
+
transport: normalizeTransport(trustedParams.transport),
|
|
4429
|
+
mode: normalizeMode(trustedParams.mode),
|
|
4430
|
+
dialInNumber: normalizeOptionalString(trustedParams.dialInNumber),
|
|
4431
|
+
pin: normalizeOptionalString(trustedParams.pin),
|
|
4432
|
+
dtmfSequence: normalizeOptionalString(trustedParams.dtmfSequence),
|
|
4433
|
+
message: normalizeOptionalString(trustedParams.message),
|
|
4434
|
+
requesterSessionKey: normalizeOptionalString(trustedParams.requesterSessionKey),
|
|
4435
|
+
agentId: normalizeOptionalString(trustedParams.agentId)
|
|
4411
4436
|
}));
|
|
4412
4437
|
} catch (err) {
|
|
4413
4438
|
sendError(respond, err);
|
|
4414
4439
|
}
|
|
4415
4440
|
});
|
|
4416
|
-
api.registerGatewayMethod("googlemeet.create", async ({ params, respond }) => {
|
|
4441
|
+
api.registerGatewayMethod("googlemeet.create", async ({ params, client, respond }) => {
|
|
4417
4442
|
try {
|
|
4418
|
-
const raw = asParamRecord(params);
|
|
4443
|
+
const raw = keepTrustedToolAgentId(asParamRecord(params), client);
|
|
4419
4444
|
respond(true, shouldJoinCreatedMeet(raw) ? await createAndJoinMeetFromParams({
|
|
4420
4445
|
config,
|
|
4421
4446
|
runtime: api.runtime,
|
|
@@ -4495,7 +4520,8 @@ var google_meet_default = definePluginEntry({
|
|
|
4495
4520
|
});
|
|
4496
4521
|
api.registerGatewayMethod("googlemeet.artifacts", async ({ params, respond }) => {
|
|
4497
4522
|
try {
|
|
4498
|
-
const
|
|
4523
|
+
const raw = asParamRecord(params);
|
|
4524
|
+
const resolved = await resolveArtifactQueryFromParams(config, raw);
|
|
4499
4525
|
respond(true, await fetchGoogleMeetArtifacts({
|
|
4500
4526
|
accessToken: resolved.token.accessToken,
|
|
4501
4527
|
meeting: resolved.meeting,
|
|
@@ -4511,7 +4537,8 @@ var google_meet_default = definePluginEntry({
|
|
|
4511
4537
|
});
|
|
4512
4538
|
api.registerGatewayMethod("googlemeet.attendance", async ({ params, respond }) => {
|
|
4513
4539
|
try {
|
|
4514
|
-
const
|
|
4540
|
+
const raw = asParamRecord(params);
|
|
4541
|
+
const resolved = await resolveArtifactQueryFromParams(config, raw);
|
|
4515
4542
|
respond(true, await fetchGoogleMeetAttendance({
|
|
4516
4543
|
accessToken: resolved.token.accessToken,
|
|
4517
4544
|
meeting: resolved.meeting,
|
|
@@ -4568,17 +4595,19 @@ var google_meet_default = definePluginEntry({
|
|
|
4568
4595
|
sendError(respond, err);
|
|
4569
4596
|
}
|
|
4570
4597
|
});
|
|
4571
|
-
api.registerGatewayMethod("googlemeet.testSpeech", async ({ params, respond }) => {
|
|
4598
|
+
api.registerGatewayMethod("googlemeet.testSpeech", async ({ params, client, respond }) => {
|
|
4572
4599
|
try {
|
|
4600
|
+
const trustedParams = keepTrustedToolAgentId(asParamRecord(params), client);
|
|
4573
4601
|
respond(true, await (await ensureRuntime()).testSpeech({
|
|
4574
|
-
url: resolveMeetingInput(config,
|
|
4575
|
-
transport: normalizeTransport(
|
|
4576
|
-
mode: normalizeMode(
|
|
4577
|
-
dialInNumber: normalizeOptionalString(
|
|
4578
|
-
pin: normalizeOptionalString(
|
|
4579
|
-
dtmfSequence: normalizeOptionalString(
|
|
4580
|
-
message: normalizeOptionalString(
|
|
4581
|
-
requesterSessionKey: normalizeOptionalString(
|
|
4602
|
+
url: resolveMeetingInput(config, trustedParams.url),
|
|
4603
|
+
transport: normalizeTransport(trustedParams.transport),
|
|
4604
|
+
mode: normalizeMode(trustedParams.mode),
|
|
4605
|
+
dialInNumber: normalizeOptionalString(trustedParams.dialInNumber),
|
|
4606
|
+
pin: normalizeOptionalString(trustedParams.pin),
|
|
4607
|
+
dtmfSequence: normalizeOptionalString(trustedParams.dtmfSequence),
|
|
4608
|
+
message: normalizeOptionalString(trustedParams.message),
|
|
4609
|
+
requesterSessionKey: normalizeOptionalString(trustedParams.requesterSessionKey),
|
|
4610
|
+
agentId: normalizeOptionalString(trustedParams.agentId)
|
|
4582
4611
|
}));
|
|
4583
4612
|
} catch (err) {
|
|
4584
4613
|
sendError(respond, err);
|
|
@@ -4604,58 +4633,65 @@ var google_meet_default = definePluginEntry({
|
|
|
4604
4633
|
async execute(_toolCallId, params) {
|
|
4605
4634
|
const raw = asParamRecord(params);
|
|
4606
4635
|
const requesterSessionKey = normalizeOptionalString(toolContext.sessionKey);
|
|
4607
|
-
const
|
|
4608
|
-
...raw,
|
|
4609
|
-
requesterSessionKey
|
|
4610
|
-
} : raw;
|
|
4636
|
+
const agentId = toolContext.agentId ? normalizeAgentId(toolContext.agentId) : void 0;
|
|
4611
4637
|
try {
|
|
4638
|
+
const useTrustedRuntime = agentId ? await api.runtime.gateway.isAvailable() : false;
|
|
4639
|
+
if (agentId && agentId !== "main" && !useTrustedRuntime) throw new Error("Per-agent Google Meet routing requires a Gateway-hosted agent run.");
|
|
4640
|
+
const rawWithRequester = {
|
|
4641
|
+
...raw,
|
|
4642
|
+
...requesterSessionKey ? { requesterSessionKey } : {},
|
|
4643
|
+
...useTrustedRuntime ? { agentId } : {}
|
|
4644
|
+
};
|
|
4612
4645
|
assertGoogleMeetAgentToolActionSupported({
|
|
4613
4646
|
config,
|
|
4614
4647
|
raw
|
|
4615
4648
|
});
|
|
4616
4649
|
switch (raw.action) {
|
|
4617
|
-
case "join": return
|
|
4650
|
+
case "join": return jsonResult(await callGoogleMeetGatewayFromTool({
|
|
4618
4651
|
config,
|
|
4619
4652
|
action: "join",
|
|
4620
|
-
raw: rawWithRequester
|
|
4653
|
+
raw: rawWithRequester,
|
|
4654
|
+
runtime: useTrustedRuntime ? api.runtime : void 0
|
|
4621
4655
|
}));
|
|
4622
|
-
case "create": return
|
|
4656
|
+
case "create": return jsonResult(await callGoogleMeetGatewayFromTool({
|
|
4623
4657
|
config,
|
|
4624
4658
|
action: "create",
|
|
4625
|
-
raw: rawWithRequester
|
|
4659
|
+
raw: rawWithRequester,
|
|
4660
|
+
runtime: useTrustedRuntime ? api.runtime : void 0
|
|
4626
4661
|
}));
|
|
4627
|
-
case "test_speech": return
|
|
4662
|
+
case "test_speech": return jsonResult(await callGoogleMeetGatewayFromTool({
|
|
4628
4663
|
config,
|
|
4629
4664
|
action: "test_speech",
|
|
4630
|
-
raw: rawWithRequester
|
|
4665
|
+
raw: rawWithRequester,
|
|
4666
|
+
runtime: useTrustedRuntime ? api.runtime : void 0
|
|
4631
4667
|
}));
|
|
4632
|
-
case "test_listen": return
|
|
4668
|
+
case "test_listen": return jsonResult(await callGoogleMeetGatewayFromTool({
|
|
4633
4669
|
config,
|
|
4634
4670
|
action: "test_listen",
|
|
4635
4671
|
raw
|
|
4636
4672
|
}));
|
|
4637
|
-
case "status": return
|
|
4673
|
+
case "status": return jsonResult(await callGoogleMeetGatewayFromTool({
|
|
4638
4674
|
config,
|
|
4639
4675
|
action: "status",
|
|
4640
4676
|
raw
|
|
4641
4677
|
}));
|
|
4642
|
-
case "recover_current_tab": return
|
|
4678
|
+
case "recover_current_tab": return jsonResult(await callGoogleMeetGatewayFromTool({
|
|
4643
4679
|
config,
|
|
4644
4680
|
action: "recover_current_tab",
|
|
4645
4681
|
raw
|
|
4646
4682
|
}));
|
|
4647
|
-
case "setup_status": return
|
|
4683
|
+
case "setup_status": return jsonResult(await callGoogleMeetGatewayFromTool({
|
|
4648
4684
|
config,
|
|
4649
4685
|
action: "setup_status",
|
|
4650
4686
|
raw
|
|
4651
4687
|
}));
|
|
4652
4688
|
case "resolve_space": {
|
|
4653
4689
|
const { token: _token, ...result } = await resolveSpaceFromParams(config, raw);
|
|
4654
|
-
return
|
|
4690
|
+
return jsonResult(result);
|
|
4655
4691
|
}
|
|
4656
4692
|
case "preflight": {
|
|
4657
4693
|
const { meeting, token, space } = await resolveSpaceFromParams(config, raw);
|
|
4658
|
-
return
|
|
4694
|
+
return jsonResult(buildGoogleMeetPreflightReport({
|
|
4659
4695
|
input: meeting,
|
|
4660
4696
|
space,
|
|
4661
4697
|
previewAcknowledged: config.preview.enrollmentAcknowledged,
|
|
@@ -4669,7 +4705,7 @@ var google_meet_default = definePluginEntry({
|
|
|
4669
4705
|
raw,
|
|
4670
4706
|
accessToken: token.accessToken
|
|
4671
4707
|
});
|
|
4672
|
-
return
|
|
4708
|
+
return jsonResult({
|
|
4673
4709
|
...await fetchLatestGoogleMeetConferenceRecord({
|
|
4674
4710
|
accessToken: token.accessToken,
|
|
4675
4711
|
meeting: resolved.meeting
|
|
@@ -4680,7 +4716,7 @@ var google_meet_default = definePluginEntry({
|
|
|
4680
4716
|
case "calendar_events": {
|
|
4681
4717
|
const token = await resolveGoogleMeetTokenFromParams(config, raw);
|
|
4682
4718
|
const window = raw.today === true ? buildGoogleMeetCalendarDayWindow() : {};
|
|
4683
|
-
return
|
|
4719
|
+
return jsonResult(await listGoogleMeetCalendarEvents({
|
|
4684
4720
|
accessToken: token.accessToken,
|
|
4685
4721
|
calendarId: normalizeOptionalString(raw.calendarId),
|
|
4686
4722
|
eventQuery: normalizeOptionalString(raw.event),
|
|
@@ -4689,7 +4725,7 @@ var google_meet_default = definePluginEntry({
|
|
|
4689
4725
|
}
|
|
4690
4726
|
case "artifacts": {
|
|
4691
4727
|
const resolved = await resolveArtifactQueryFromParams(config, raw);
|
|
4692
|
-
return
|
|
4728
|
+
return jsonResult(await fetchGoogleMeetArtifacts({
|
|
4693
4729
|
accessToken: resolved.token.accessToken,
|
|
4694
4730
|
meeting: resolved.meeting,
|
|
4695
4731
|
conferenceRecord: resolved.conferenceRecord,
|
|
@@ -4701,7 +4737,7 @@ var google_meet_default = definePluginEntry({
|
|
|
4701
4737
|
}
|
|
4702
4738
|
case "attendance": {
|
|
4703
4739
|
const resolved = await resolveArtifactQueryFromParams(config, raw);
|
|
4704
|
-
return
|
|
4740
|
+
return jsonResult(await fetchGoogleMeetAttendance({
|
|
4705
4741
|
accessToken: resolved.token.accessToken,
|
|
4706
4742
|
meeting: resolved.meeting,
|
|
4707
4743
|
conferenceRecord: resolved.conferenceRecord,
|
|
@@ -4712,22 +4748,22 @@ var google_meet_default = definePluginEntry({
|
|
|
4712
4748
|
earlyBeforeMinutes: resolved.earlyBeforeMinutes
|
|
4713
4749
|
}));
|
|
4714
4750
|
}
|
|
4715
|
-
case "export": return
|
|
4751
|
+
case "export": return jsonResult(await exportGoogleMeetBundleFromParams(config, raw));
|
|
4716
4752
|
case "leave":
|
|
4717
4753
|
if (!normalizeOptionalString(raw.sessionId)) throw new Error("sessionId required");
|
|
4718
|
-
return
|
|
4754
|
+
return jsonResult(await callGoogleMeetGatewayFromTool({
|
|
4719
4755
|
config,
|
|
4720
4756
|
action: "leave",
|
|
4721
4757
|
raw
|
|
4722
4758
|
}));
|
|
4723
|
-
case "end_active_conference": return
|
|
4759
|
+
case "end_active_conference": return jsonResult(await callGoogleMeetGatewayFromTool({
|
|
4724
4760
|
config,
|
|
4725
4761
|
action: "end_active_conference",
|
|
4726
4762
|
raw
|
|
4727
4763
|
}));
|
|
4728
4764
|
case "speak":
|
|
4729
4765
|
if (!normalizeOptionalString(raw.sessionId)) throw new Error("sessionId required");
|
|
4730
|
-
return
|
|
4766
|
+
return jsonResult(await callGoogleMeetGatewayFromTool({
|
|
4731
4767
|
config,
|
|
4732
4768
|
action: "speak",
|
|
4733
4769
|
raw
|
|
@@ -4735,7 +4771,7 @@ var google_meet_default = definePluginEntry({
|
|
|
4735
4771
|
default: throw new Error("unknown google_meet action");
|
|
4736
4772
|
}
|
|
4737
4773
|
} catch (err) {
|
|
4738
|
-
return
|
|
4774
|
+
return jsonResult(formatGatewayError(err));
|
|
4739
4775
|
}
|
|
4740
4776
|
}
|
|
4741
4777
|
}), { name: "google_meet" });
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { n as readGoogleApiErrorDetail } from "./google-api-errors-CDUYkIcK.js";
|
|
2
|
+
import { readProviderJsonResponse } from "openclaw/plugin-sdk/provider-http";
|
|
2
3
|
import { fetchWithSsrFGuard } from "openclaw/plugin-sdk/ssrf-runtime";
|
|
3
4
|
import { MAX_DATE_TIMESTAMP_MS, resolveDateTimestampMs, resolveExpiresAtMsFromDurationSeconds } from "openclaw/plugin-sdk/number-runtime";
|
|
4
5
|
import { generateHexPkceVerifierChallenge } from "openclaw/plugin-sdk/provider-auth";
|
|
@@ -9,6 +10,7 @@ const GOOGLE_MEET_AUTH_URL = "https://accounts.google.com/o/oauth2/v2/auth";
|
|
|
9
10
|
const GOOGLE_MEET_TOKEN_URL = "https://oauth2.googleapis.com/token";
|
|
10
11
|
const GOOGLE_MEET_TOKEN_HOST = "oauth2.googleapis.com";
|
|
11
12
|
const GOOGLE_MEET_DEFAULT_TOKEN_LIFETIME_SECONDS = 3600;
|
|
13
|
+
const GOOGLE_OAUTH_TOKEN_JSON_MAX_BYTES = 256 * 1024;
|
|
12
14
|
const GOOGLE_MEET_SCOPES = [
|
|
13
15
|
"https://www.googleapis.com/auth/meetings.space.created",
|
|
14
16
|
"https://www.googleapis.com/auth/meetings.space.readonly",
|
|
@@ -23,7 +25,7 @@ function resolveGoogleMeetTokenExpiresAt(value, nowMs = Date.now()) {
|
|
|
23
25
|
return resolveExpiresAtMsFromDurationSeconds(value, { nowMs: now }) ?? resolveExpiresAtMsFromDurationSeconds(GOOGLE_MEET_DEFAULT_TOKEN_LIFETIME_SECONDS, { nowMs: now }) ?? now;
|
|
24
26
|
}
|
|
25
27
|
function buildGoogleMeetAuthUrl(params) {
|
|
26
|
-
|
|
28
|
+
const search = new URLSearchParams({
|
|
27
29
|
client_id: params.clientId,
|
|
28
30
|
response_type: "code",
|
|
29
31
|
redirect_uri: params.redirectUri ?? GOOGLE_MEET_REDIRECT_URI,
|
|
@@ -33,7 +35,8 @@ function buildGoogleMeetAuthUrl(params) {
|
|
|
33
35
|
access_type: "offline",
|
|
34
36
|
prompt: "consent",
|
|
35
37
|
state: params.state
|
|
36
|
-
})
|
|
38
|
+
});
|
|
39
|
+
return `${GOOGLE_MEET_AUTH_URL}?${search.toString()}`;
|
|
37
40
|
}
|
|
38
41
|
async function executeGoogleTokenRequest(body) {
|
|
39
42
|
const { response, release } = await fetchWithSsrFGuard({
|
|
@@ -54,7 +57,7 @@ async function executeGoogleTokenRequest(body) {
|
|
|
54
57
|
const detail = await readGoogleApiErrorDetail(response);
|
|
55
58
|
throw new Error(`Google OAuth token request failed (${response.status}): ${detail}`);
|
|
56
59
|
}
|
|
57
|
-
const payload = await response
|
|
60
|
+
const payload = await readProviderJsonResponse(response, "Google OAuth token", { maxBytes: GOOGLE_OAUTH_TOKEN_JSON_MAX_BYTES });
|
|
58
61
|
const accessToken = payload.access_token?.trim();
|
|
59
62
|
if (!accessToken) throw new Error("Google OAuth token response was missing access_token");
|
|
60
63
|
return {
|