Add extensions codes to analytics aggregation GraphQL errors
What does this MR do and why?
GraphQL errors from the analytics aggregation resolvers now carry stable extensions codes: CLICKHOUSE_NOT_CONFIGURED and SIPHON_REPLICATION_DISABLED on the Siphon replication check, and AGGREGATION_NOT_AUTHORIZED when the engine reports a typed authorization error. The GLQL query service also stops stripping the extensions key from /api/glql responses. Frontends need a machine-readable code to map failures to distinct panel states, and message matching breaks on copy edits.
The extensions passthrough applies to every GraphQL error on /api/glql, matching what /api/graphql already exposes for the same queries in the same user context; both endpoints execute the same schema, so no additional information becomes reachable.
Stacked on !256768 (merged).
References
How to set up and validate locally
- Run the request specs for the five Siphon-gated engines plus
spec/services/analytics/glql/query_service_spec.rbandee/spec/requests/api/graphql/analytics/duo_workflows_spec.rb. - All examples pass.
Screenshots or screen recordings
Backend only.