import { automateTriggerDefinitions as triggerDefinitions } from "@automate.ax/catalog/triggers/automate" import { createTrigger, type TriggerOptions, } from "../../automation/create-trigger" import { normalizeAutomationSelector, type AutomationSelector, } from "../../automation/automation-descriptor" type CanonicalAutomationTriggerOptions = TriggerOptions< typeof triggerDefinitions.automateActionAttemptEvent > /** Shared public options for automation-scoped lifecycle triggers. */ type AutomationTriggerOptions = Omit< CanonicalAutomationTriggerOptions, "automation" > & { /** Automation descriptor, description, or ID to watch. */ automation: AutomationSelector } /** * Converts an Automate.ax lifecycle selector into canonical configuration. * * @param options - Public trigger options. */ function getAutomationTriggerConfig( options: AutomationTriggerOptions, ): CanonicalAutomationTriggerOptions { return { ...options, automation: normalizeAutomationSelector(options.automation), } } /** Subscribes to every logical action-attempt transition. */ export const onAutomateActionAttemptEvent = createTrigger( triggerDefinitions.automateActionAttemptEvent, getAutomationTriggerConfig, ) /** Subscribes when an action schedules another logical attempt. */ export const onAutomateActionRetryScheduled = createTrigger( triggerDefinitions.automateActionRetryScheduled, getAutomationTriggerConfig, ) /** Subscribes when an action reaches a certain terminal failure. */ export const onAutomateActionFailed = createTrigger( triggerDefinitions.automateActionFailed, getAutomationTriggerConfig, ) /** Subscribes when an unsafe action delivery has an ambiguous outcome. */ export const onAutomateActionIndeterminate = createTrigger( triggerDefinitions.automateActionIndeterminate, getAutomationTriggerConfig, ) /** Subscribes to enabled-state changes for one Automate.ax automation. */ export const onAutomateAutomationStateChanged = createTrigger( triggerDefinitions.automateAutomationStateChanged, getAutomationTriggerConfig, ) /** Subscribes when one Automate.ax automation becomes enabled. */ export const onAutomateAutomationEnabled = createTrigger( triggerDefinitions.automateAutomationEnabled, getAutomationTriggerConfig, ) /** Subscribes when one Automate.ax automation becomes disabled. */ export const onAutomateAutomationDisabled = createTrigger( triggerDefinitions.automateAutomationDisabled, getAutomationTriggerConfig, ) /** Subscribes to every deployment status transition for one project. */ export const onAutomateDeploymentEvent = createTrigger( triggerDefinitions.automateDeploymentEvent, ) /** Subscribes when a deployment needs integration-account authorization. */ export const onAutomateDeploymentAwaitingAuthorization = createTrigger( triggerDefinitions.automateDeploymentAwaitingAuthorization, ) /** Subscribes when a deployment succeeds. */ export const onAutomateDeploymentSucceeded = createTrigger( triggerDefinitions.automateDeploymentSucceeded, ) /** Subscribes when a deployment permanently fails. */ export const onAutomateDeploymentFailed = createTrigger( triggerDefinitions.automateDeploymentFailed, ) /** Subscribes when a deployment is cancelled. */ export const onAutomateDeploymentCancelled = createTrigger( triggerDefinitions.automateDeploymentCancelled, ) /** Subscribes to every execution lifecycle transition. */ export const onAutomateExecutionEvent = createTrigger( triggerDefinitions.automateExecutionEvent, getAutomationTriggerConfig, ) /** Subscribes when an execution settles successfully. */ export const onAutomateExecutionSettled = createTrigger( triggerDefinitions.automateExecutionSettled, getAutomationTriggerConfig, ) /** Subscribes when an execution permanently fails. */ export const onAutomateExecutionFailed = createTrigger( triggerDefinitions.automateExecutionFailed, getAutomationTriggerConfig, )