feat(automations): trigger fidelity — providers, pickers, webhook URL tokens, circleback/granola drop (dark launch)

Merged
SA
2mo ago
+13895-11094

Started as Slack parity; grew into the full trigger-fidelity pass. Ships dark: the automation-event-triggers flag targets @superset.sh only, so nothing here is customer-visible until the flag opens up. Strategy: land the API/infra work live now, iterate the unreviewed provider UIs in small follow-up PRs per row.

Providers & editor

  • Provider registry seam (TriggerProvider: menu / renderSentence / optionGroup / connectionProvider / runtimeWarnings) with all ten live kinds; sentence grammar, pickers, per-group loading/error/refresh states, membership warnings + Slack auto-join (channels:join — live Slack app needs a manifest sync and one re-consent after merge).
  • Reviewed rows (Slack, GitHub, Scheduled) are pinned by row specs; the rest render behind the flag and get their review pass on main.
  • Requires-connection rows collapse to the trigger's name + a Connect button.

Circleback & Granola dropped

They were the generic webhook wearing a costume. Providers, matchers, billing lines, and schema entries deleted; migration 0100 recreates automation_trigger_kind with the ten live values (enum values can't be dropped in place — the dependent partial indexes and CHECK constraint step aside for the round-trip; replay-tested on a dev branch). Prod had zero rows on any removed kind.

Webhook trigger

  • URL-token auth: ?token= accepted alongside the Authorization: Bearer header (header wins). For producers whose settings accept nothing but a URL.
  • Editor mints the token once and offers "Copy URL with token" / "Copy auth header".

Also in here

  • Sentry connect flow fix on the web integrations page.
  • Cleaner run context payloads for every provider (Slack curated, raw envelopes dropped).

i18n: deliberately deferred

This branch rewrote most of the automations copy, so the directory is temporarily removed from enforced-dirs.ts and the new strings are English-only — converting them is a dedicated follow-up pass rather than a rushed side-effect here. 105 stranded catalog entries pruned across all 17 locales; a labelText/providerLabelText seam lets converted grammars (msg descriptors, from main) and this branch's plain-string grammars coexist.

Verification

Lint, fresh full-monorepo typecheck, and suites all green: desktop 3252, shared 882, trpc 117, api 21, i18n 115. Migration 0100 replay-tested (BEGIN/ROLLBACK) and applied on the dev branch. Pre-rebase granular history: backup/slack-trigger-parity-pre-i18n-rebase.

https://claude.ai/code/session_01MUPLfPFVm34EJmVrVr2pxu