import { googleTriggerDefinitions as triggerDefinitions } from "@automate.ax/catalog/triggers/google" import { normalizeGoogleMeetSpaceName } from "@automate.ax/integration-contracts/google-meet" import { createTrigger } from "../../automation/create-trigger" import type { IntegrationAccountReference } from "../../automation/integrations" /** Options shared by Google Meet event subscriptions. */ export interface OnGoogleMeetEventOptions { /** * Google account binding used to watch Meet activity. * * Omitting this value uses the project's default Google account binding. */ account?: string | IntegrationAccountReference<"google"> /** * Meeting space resource name, code, ID, or Meet URL. * * Omit this value to watch every meeting space owned by the connected user. */ space?: string } /** Subscribes when a conference starts in a selected or owned meeting space. */ export const onGoogleMeetConferenceStarted = createTrigger( triggerDefinitions.googleMeetConferenceStarted, toGoogleMeetTriggerConfig, ) /** Subscribes when a conference ends in a selected or owned meeting space. */ export const onGoogleMeetConferenceEnded = createTrigger( triggerDefinitions.googleMeetConferenceEnded, toGoogleMeetTriggerConfig, ) /** Subscribes when a participant joins a selected or owned meeting space. */ export const onGoogleMeetParticipantJoined = createTrigger( triggerDefinitions.googleMeetParticipantJoined, toGoogleMeetTriggerConfig, ) /** Subscribes when a participant leaves a selected or owned meeting space. */ export const onGoogleMeetParticipantLeft = createTrigger( triggerDefinitions.googleMeetParticipantLeft, toGoogleMeetTriggerConfig, ) /** Subscribes when recording begins in a selected or owned meeting space. */ export const onGoogleMeetRecordingStarted = createTrigger( triggerDefinitions.googleMeetRecordingStarted, toGoogleMeetTriggerConfig, ) /** Subscribes when recording stops in a selected or owned meeting space. */ export const onGoogleMeetRecordingEnded = createTrigger( triggerDefinitions.googleMeetRecordingEnded, toGoogleMeetTriggerConfig, ) /** Subscribes when a Meet recording file becomes available in Google Drive. */ export const onGoogleMeetRecordingGenerated = createTrigger( triggerDefinitions.googleMeetRecordingFileGenerated, toGoogleMeetTriggerConfig, ) /** Subscribes when transcription begins in a selected or owned meeting space. */ export const onGoogleMeetTranscriptStarted = createTrigger( triggerDefinitions.googleMeetTranscriptStarted, toGoogleMeetTriggerConfig, ) /** Subscribes when transcription stops in a selected or owned meeting space. */ export const onGoogleMeetTranscriptEnded = createTrigger( triggerDefinitions.googleMeetTranscriptEnded, toGoogleMeetTriggerConfig, ) /** Subscribes when a Meet transcript file becomes available in Google Docs. */ export const onGoogleMeetTranscriptGenerated = createTrigger( triggerDefinitions.googleMeetTranscriptFileGenerated, toGoogleMeetTriggerConfig, ) /** Subscribes when Gemini smart-note capture begins for a Meet conference. */ export const onGoogleMeetSmartNoteStarted = createTrigger( triggerDefinitions.googleMeetSmartNoteStarted, toGoogleMeetTriggerConfig, ) /** Subscribes when Gemini smart-note capture stops for a Meet conference. */ export const onGoogleMeetSmartNoteEnded = createTrigger( triggerDefinitions.googleMeetSmartNoteEnded, toGoogleMeetTriggerConfig, ) /** Subscribes when Gemini smart notes become available in Google Docs. */ export const onGoogleMeetSmartNoteGenerated = createTrigger( triggerDefinitions.googleMeetSmartNoteFileGenerated, toGoogleMeetTriggerConfig, ) /** * Normalizes public Meet trigger options for deployment planning. * * @param options - Public trigger options. */ function toGoogleMeetTriggerConfig(options: OnGoogleMeetEventOptions = {}) { return { account: options.account, spaceName: options.space ? normalizeGoogleMeetSpaceName(options.space) : undefined, } }