module Web.FrontController where import IHP.RouterPrelude import IHP.LoginSupport.Middleware import IHP.ControllerPrelude (getAppConfig) import Generated.Types import Web.Types import Web.Routes () import Config (AnnotationLauncherEnabled (..)) -- Controllers import Web.Controller.Hubs () import Web.Controller.Widgets () import Web.Controller.InteractionEvents () import Web.Controller.Annotations () import Web.Controller.AnnotationThreads () import Web.Controller.RequirementCandidates () import Web.Controller.Requirements () import Web.Controller.DecisionRecords () import Web.Controller.DeploymentRecords () import Web.Controller.AgentProposals () import Web.Controller.ApiInteractionEvents () import Web.Controller.EnvelopeEmissionContracts () import Web.Controller.InteractionReportingContracts () import Web.Controller.WidgetAdapterSpecs () import Web.Controller.CrossHubPropagations () import Web.Controller.WidgetOwnerships () import Web.Controller.HubRoutingRules () import Web.Controller.FederatedPolicyOverlays () import Web.Controller.StewardshipRoles () import Web.Controller.ArchiveRecords () import Web.Controller.FederatedGovernance () import Web.Controller.TypeRegistries () import Web.Controller.HubCapabilityManifests () -- Phase 9 — External API Surface (IHUB-WP-0010) import Web.Controller.ApiConsumers () import Web.Controller.ApiKeys () import Web.Controller.WebhookSubscriptions () import Web.Controller.ApiDashboard () import Web.Controller.Api.V2.Widgets () import Web.Controller.Api.V2.InteractionEvents () import Web.Controller.Api.V2.Annotations () import Web.Controller.Api.V2.RequirementCandidates () import Web.Controller.Api.V2.DecisionRecords () import Web.Controller.Api.V2.DeploymentRecords () import Web.Controller.Api.V2.OutcomeSignals () import Web.Controller.Api.V2.Registries () import Web.Controller.Api.V2.OpenApi () import Web.Controller.Api.V2.Token () import Web.Controller.Api.V2.Sdk () import Web.Controller.Sessions () instance FrontController WebApplication where controllers = [ parseRoute @SessionsController , parseRoute @HubsController , parseRoute @WidgetsController , parseRoute @InteractionEventsController , parseRoute @AnnotationsController , parseRoute @AnnotationThreadsController , parseRoute @RequirementCandidatesController , parseRoute @RequirementsController , parseRoute @DecisionRecordsController , parseRoute @DeploymentRecordsController , parseRoute @AgentProposalsController , parseRoute @ApiInteractionEventsController , parseRoute @EnvelopeEmissionContractsController , parseRoute @InteractionReportingContractsController , parseRoute @WidgetAdapterSpecsController , parseRoute @CrossHubPropagationsController , parseRoute @WidgetOwnershipsController , parseRoute @HubRoutingRulesController , parseRoute @FederatedPolicyOverlaysController , parseRoute @StewardshipRolesController , parseRoute @ArchiveRecordsController , parseRoute @FederatedGovernanceController , parseRoute @TypeRegistriesController , parseRoute @HubCapabilityManifestsController -- Phase 9 — External API Surface (IHUB-WP-0010) , parseRoute @ApiConsumersController , parseRoute @ApiKeysController , parseRoute @WebhookSubscriptionsController , parseRoute @ApiDashboardController -- /api/v2/ REST endpoints (registered before /api/v1/ to avoid prefix clash) , parseRoute @ApiV2WidgetsController , parseRoute @ApiV2InteractionEventsController , parseRoute @ApiV2AnnotationsController , parseRoute @ApiV2RequirementCandidatesController , parseRoute @ApiV2DecisionRecordsController , parseRoute @ApiV2DeploymentRecordsController , parseRoute @ApiV2OutcomeSignalsController , parseRoute @ApiV2RegistriesController , parseRoute @ApiV2OpenApiController , parseRoute @ApiV2TokenController , parseRoute @ApiV2SdkController ] instance InitControllerContext WebApplication where initContext = do setLayout defaultLayout initAuthentication @User annotationLauncherScript :: (?context :: ControllerContext) => Html annotationLauncherScript = let AnnotationLauncherEnabled enabled = getAppConfig @AnnotationLauncherEnabled in if enabled then [hsx||] else mempty defaultLayout :: Layout defaultLayout inner = [hsx| inter-hub {autoRefreshMeta} {annotationLauncherScript}
{inner}
|]