Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ActionsWorkerModule = fx.Module("worker-actions", fx.Provide(actionsactivities.New), fx.Provide(actionsworker.NewWorkflows), fx.Provide(worker.AsWorker(actionsworker.New)), )
ActionsWorkerModule provides the actions namespace worker.
var AdminDashboardAPIModule = fx.Module("admin-dashboard-api", fx.Provide(api.NewEndpointAudit), fx.Provide(api.AsAPI(api.NewAdminDashboardAPI)), fx.Invoke(db.DBGroupParam(func([]*gorm.DB) {})), fx.Invoke(api.APIGroupParam(func([]*api.API) {})), )
AdminDashboardAPIModule provides the admin dashboard API server.
var AdminDashboardServicesModule = fx.Module("admin-dashboard-services", sharedServices, fx.Provide(psql.AsPSQLReplica(psql.NewReplica)), )
AdminDashboardServicesModule provides services for the admin dashboard API.
var AllAPIsModule = fx.Module("all-apis", fx.Provide(api.NewEndpointAudit), fx.Provide(api.AsAPI(api.NewPublicAPI)), fx.Provide(api.AsAPI(api.NewRunnerAPI)), fx.Provide(api.AsAPI(api.NewInternalAPI)), fx.Provide(api.AsAPI(api.NewAuthAPI)), fx.Provide(api.AsAPI(api.NewAdminDashboardAPI)), fx.Provide(api.AsAPI(api.NewSlackAPI)), fx.Invoke(db.DBGroupParam(func([]*gorm.DB) {})), fx.Invoke(api.APIGroupParam(func([]*api.API) {})), )
AllAPIsModule provides all API servers (for running all in one process).
var AllServicesModule = fx.Module("all-services", sharedServices, fx.Provide(api.AsService(authservice.New)), )
AllServicesModule provides all services including authservice (for dev mode).
var AppsWorkerModule = fx.Module("worker-apps", fx.Provide(appsactivities.New), fx.Provide(appsworker.NewWorkflows), fx.Provide(appbranchesactivities.New), fx.Provide(appconfigsyncactivities.NewActivities), fx.Provide(syncappconfiginstallsactivities.NewActivities), fx.Provide(worker.AsWorker(appsworker.New)), )
AppsWorkerModule provides the apps namespace worker.
var AuthAPIModule = fx.Module("auth-api", fx.Provide(api.NewEndpointAudit), fx.Provide(api.AsAPI(api.NewAuthAPI)), fx.Invoke(db.DBGroupParam(func([]*gorm.DB) {})), fx.Invoke(api.APIGroupParam(func([]*api.API) {})), )
AuthAPIModule provides the auth API server.
var AuthServicesModule = fx.Module("auth-services", sharedServices, fx.Provide(api.AsService(authservice.New)), )
AuthServicesModule provides services for the auth API (includes authservice).
var ComponentsWorkerModule = fx.Module("worker-components", fx.Provide(componentsactivities.New), fx.Provide(componentsworker.NewWorkflows), fx.Provide(worker.AsWorker(componentsworker.New)), )
ComponentsWorkerModule provides the components namespace worker.
var GeneralWorkerModule = fx.Module("worker-general", fx.Provide(generalactivities.New), fx.Provide(generalworker.NewWorkflows), fx.Provide(worker.AsWorker(generalworker.New)), )
GeneralWorkerModule provides the general namespace worker.
var HelpersModule = fx.Module("helpers", fx.Provide(accountshelpers.New), fx.Provide(vcshelpers.New), fx.Provide(actionshelpers.New), fx.Provide(componentshelpers.New), fx.Provide(orgshelpers.New), fx.Provide(appshelpers.New), fx.Provide(installshelpers.New), fx.Provide(runnershelpers.New), fx.Provide(generalhelpers.New), fx.Provide(runbookshelpers.New), )
HelpersModule provides all domain-specific helper functions used across different parts of the application.
var InfrastructureModule = fx.Module("infrastructure", fx.Provide(internal.NewConfig), fx.WithLogger(pkglog.NewFXLog), fx.Provide(log.New), fx.Provide(dblog.New), fx.Provide(audit.New), fx.Provide(func(cfg *internal.Config) *querycollector.Collector { if cfg.DebugEnableQueryCollector { return querycollector.NewCollector(5000) } return nil }), fx.Provide(psql.AsPSQL(psql.New)), fx.Provide(ch.AsCH(ch.New)), fx.Provide(kafka.New), fx.Invoke(func(lc fx.Lifecycle, p queryWriterParams) { if p.Collector == nil { return } disabledTables := make(map[string]struct{}) if p.Cfg.QueryCollectorDisabledTables != "" { for _, t := range strings.Split(p.Cfg.QueryCollectorDisabledTables, ",") { t = strings.TrimSpace(t) if t != "" { disabledTables[t] = struct{}{} } } } w := querycollector.NewWriter(querycollector.WriterConfig{ DB: p.CHDB, Logger: p.L, DisabledTables: disabledTables, }) p.Collector.SetWriter(w) lc.Append(fx.Hook{ OnStart: func(context.Context) error { w.Start() return nil }, OnStop: func(context.Context) error { w.Stop() return nil }, }) }), fx.Provide(blobstore.NewService), fx.Provide(func(cfg *internal.Config, l *zap.Logger) *filecache.FileCache { cache, err := filecache.New(filecache.Options{ Dir: cfg.TemporalBlobCacheDir, MaxCount: cfg.TemporalBlobCacheMaxCount, MaxBytes: int64(cfg.TemporalBlobCacheMaxSizeMB) * 1024 * 1024, }) if err != nil { l.Warn("failed to create blob cache, caching disabled", zap.Error(err)) return nil } return cache }), fx.Provide(gzip.AsGzip(gzip.New)), fx.Provide(largepayload.AsLargePayload(largepayload.New)), fx.Provide(blob.AsBlob(blob.New)), fx.Provide(signaldb.NewPayloadConverter), fx.Provide(dataconverter.New), fx.Provide(temporal.New), fx.Provide(loops.New), fx.Provide(salesforce.New), fx.Provide(github.New), fx.Provide(metrics.New), fx.Provide(propagator.New), fx.Provide(validator.New), fx.Provide(notifications.New), fx.Provide(terraform.New), fx.Provide(authz.New), fx.Provide(features.New), fx.Provide(account.New), fx.Provide(analytics.New), fx.Provide(analytics.NewTemporal), fx.Provide(cloudformation.NewTemplates), fx.Provide(arm.NewTemplates), fx.Provide(secretsmanager.NewService), fx.Provide(enqueuer.New), fx.Provide(queueclient.New), fx.Provide(emitterclient.New), fx.Provide(flowclient.New), fx.Provide(notebookclient.New), )
InfrastructureModule provides all core infrastructure dependencies including config, logging, databases, temporal, and other shared services.
var InstallCronWorkerModule = fx.Module("worker-install-crons", fx.Provide(worker.AsWorker(installsworker.NewCronWorker)), )
InstallCronWorkerModule provides the install crons worker (install-crons task queue).
var InstallWorkerProvidersModule = fx.Module("worker-installs-providers", fx.Provide(installsactivities.New), fx.Provide(installsworker.NewWorkflows), fx.Provide(installsactionsworker.NewWorkflows), fx.Provide(installscomponentsworker.NewWorkflows), fx.Provide(installssandboxworker.NewWorkflows), fx.Provide(installsstackworker.NewWorkflows), fx.Provide(installsstateworker.New), )
InstallWorkerProvidersModule provides the install workflow/activity constructors shared by the installs worker and the install crons worker. Kept separate so either worker can run standalone without double-providing.
var InstallsWorkerModule = fx.Module("worker-installs", fx.Provide(worker.AsWorker(installsworker.New)), )
InstallsWorkerModule provides the installs namespace worker (api task queue).
var InternalAPIModule = fx.Module("internal-api", fx.Provide(api.NewEndpointAudit), fx.Provide(api.AsAPI(api.NewInternalAPI)), fx.Invoke(db.DBGroupParam(func([]*gorm.DB) {})), fx.Invoke(api.APIGroupParam(func([]*api.API) {})), )
InternalAPIModule provides the internal API server.
var InternalServicesModule = fx.Module("internal-services", sharedServices)
InternalServicesModule provides services for the internal API (excludes authservice).
var KafkaConsumersModule = fx.Module("kafka-consumers", fx.Provide(runnersconsumer.NewHeartbeatConsumer), fx.Provide(runnersconsumer.NewOtelLogsConsumer), fx.Provide(runnersconsumer.NewOtelTracesConsumer), fx.Provide(consumer.NewDLQConsumer), fx.Invoke(func(*runnersconsumer.HeartbeatConsumer) {}), fx.Invoke(func(*runnersconsumer.OtelLogsConsumer) {}), fx.Invoke(func(*runnersconsumer.OtelTracesConsumer) {}), fx.Invoke(func(*consumer.DLQConsumer) {}), )
KafkaConsumersModule wires every Kafka consumer, domain ones alongside the DLQ consumer from the runtime package. Which of them actually run is decided by `consumer --name`, not by what's registered here: each consumer keeps its own topic, consumer group and client, and a deployment runs one or more of them (the `otel` deployment runs otel-logs and otel-traces together). Locally `--name=all` runs them all in one process. Each also no-ops unless KAFKA_ENABLED.
So registering a new consumer here is safe — it does not join any existing deployment. What it does need is its own entry in `consumer.Names()`, and either a new deployment instance in the ctl-api chart's `consumer.instances` or an added name on an existing instance's `--name`, or nothing will ever select it.
var MCPServicesModule = fx.Module("mcp-services", sharedServices)
MCPServicesModule provides services for the MCP server (excludes authservice). The MCP server validates bearer tokens itself and no service registers MCP tools through authservice, so pulling it in would only impose authservice's config requirements (NUON_AUTH_CLIENT_SECRET et al) on the mcp deployment.
var MiddlewaresModule = fx.Module("middlewares", fx.Provide(middlewares.AsMiddleware(stderr.New)), fx.Provide(middlewares.AsMiddleware(global.New)), fx.Provide(middlewares.AsMiddleware(metrics.New)), fx.Provide(middlewares.AsMiddleware(metrics.NewInternal)), fx.Provide(middlewares.AsMiddleware(metrics.NewRunner)), fx.Provide(middlewares.AsMiddleware(headers.New)), fx.Provide(middlewares.AsMiddleware(auth.New)), fx.Provide(middlewares.AsMiddleware(org.New)), fx.Provide(middlewares.AsMiddleware(org.NewRunner)), fx.Provide(middlewares.AsMiddleware(public.New)), fx.Provide(middlewares.AsMiddleware(pagination.New)), fx.Provide(middlewares.AsMiddleware(cors.New)), fx.Provide(middlewares.AsMiddleware(blob.New)), fx.Provide(middlewares.AsMiddleware(config.New)), fx.Provide(middlewares.AsMiddleware(patcher.New)), fx.Provide(middlewares.AsMiddleware(invites.New)), fx.Provide(middlewares.AsMiddleware(admin.New)), fx.Provide(middlewares.AsMiddleware(log.New)), fx.Provide(middlewares.AsMiddleware(size.New)), fx.Provide(middlewares.AsMiddleware(timeout.New)), fx.Provide(middlewares.AsMiddleware(audit.NewPublic)), fx.Provide(middlewares.AsMiddleware(audit.NewInternal)), fx.Provide(middlewares.AsMiddleware(audit.NewRunner)), fx.Provide(middlewares.AsMiddleware(panicker.New)), fx.Provide(middlewares.AsMiddleware(tracer.New)), fx.Provide(middlewares.AsMiddleware(chaos.New)), )
MiddlewaresModule provides all HTTP middlewares used by the API services.
var OnboardingsWorkerModule = fx.Module("worker-onboardings", fx.Provide(worker.AsWorker(onboardingworker.New)), )
OnboardingsWorkerModule provides the onboardings namespace worker.
var OrgsWorkerModule = fx.Module("worker-orgs", fx.Provide(orgsactivities.New), fx.Provide(fx.Annotate(appsactivities.New, fx.ResultTags(`name:"org-trigger-activities"`))), fx.Provide(orgsworker.NewWorkflows), fx.Provide(worker.AsWorker(orgsworker.New)), )
OrgsWorkerModule provides the orgs namespace worker.
var PublicAPIModule = fx.Module("public-api", fx.Provide(api.NewEndpointAudit), fx.Provide(api.AsAPI(api.NewPublicAPI)), fx.Invoke(db.DBGroupParam(func([]*gorm.DB) {})), fx.Invoke(api.APIGroupParam(func([]*api.API) {})), )
PublicAPIModule provides the public-facing API server.
var PublicServicesModule = fx.Module("public-services", sharedServices)
PublicServicesModule provides services for the public API (excludes authservice).
var RunnerAPIModule = fx.Module("runner-api", fx.Provide(api.NewEndpointAudit), fx.Provide(api.AsAPI(api.NewRunnerAPI)), fx.Invoke(db.DBGroupParam(func([]*gorm.DB) {})), fx.Invoke(api.APIGroupParam(func([]*api.API) {})), )
RunnerAPIModule provides the runner API server.
var RunnerHealthcheckCronWorkerModule = fx.Module("worker-runner-healthcheck-crons", fx.Provide(worker.AsWorker(runnersworker.NewHealthcheckCronWorker)), )
RunnerHealthcheckCronWorkerModule provides the runner healthcheck crons worker.
var RunnerServicesModule = fx.Module("runner-services", sharedServices)
RunnerServicesModule provides services for the runner API (excludes authservice).
var RunnerWorkerProvidersModule = fx.Module("worker-runners-providers", fx.Provide(runnersactivities.New), fx.Provide(runnersworker.NewWorkflows), )
RunnerWorkerProvidersModule provides the runner workflow/activity constructors shared by the runners worker and the runner healthcheck crons worker.
var RunnersWorkerModule = fx.Module("worker-runners", fx.Provide(worker.AsWorker(runnersworker.New)), )
RunnersWorkerModule provides the runners namespace worker (api task queue).
var ServicesModule = AllServicesModule
ServicesModule is deprecated, use API-specific modules instead. Kept for backwards compatibility.
fx.Provide(signal.AsSignalLifecycleHook(signalhooks.NewWebhookSignalLifecycleHook)), fx.Provide(signal.AsSignalLifecycleHook(signalhooks.NewSlackSignalLifecycleHook)), fx.Provide(signal.AsSignalLifecycleHook(signalhooks.NewTelemetrySignalLifecycleHook)), fx.Provide(signal.NewSignalLifecycleActivities), fx.Provide(jobactivities.New), fx.Provide(flowactivities.New), fx.Provide(queueactivities.New), fx.Provide(handleractivities.New), fx.Provide(emitteractivities.New), fx.Provide(statusactivities.New), fx.Provide(workflowstepawaitingretry.NewNotifier), fx.Provide(controlplanejob.NewActivities), fx.Provide(activities.New), fx.Provide(onboardingactivities.New), fx.Provide(job.New), fx.Provide(controlplanejob.NewWorkflows), fx.Provide(workflowsflow.New), fx.Provide(workflows.NewActivities), fx.Provide(workflows.NewWorkflows), fx.Provide(queue.NewWorkflows), fx.Provide(handler.NewWorkflows), fx.Provide(emitter.NewWorkflows), fx.Provide(enqueuer.NewWorkflows), )
SharedWorkflowsModule provides shared workflow activities and workflows used across multiple worker namespaces.
var SlackAPIModule = fx.Module("slack-api", fx.Provide(api.NewEndpointAudit), fx.Provide(api.AsAPI(api.NewSlackAPI)), fx.Invoke(db.DBGroupParam(func([]*gorm.DB) {})), fx.Invoke(api.APIGroupParam(func([]*api.API) {})), )
SlackAPIModule provides the dedicated Slack-facing API server (OAuth callback, slash commands, Events API webhooks).
var SlackLibsModule = fx.Module("slack-libs", fx.Provide(func() *slackclient.Client { return slackclient.New() }), fx.Provide(func(cfg *internal.Config) (*statejwt.Encoder, error) { return statejwt.New(cfg.SlackStateJWTSecret) }), fx.Provide(autolink.New), )
SlackLibsModule provides the shared Slack helper libraries (Web API client and OAuth state JWT encoder) used by the slack service package as well as the Slack-listener handlers in Phase 4.
The state-JWT encoder requires the SlackStateJWTSecret config value; in dev environments where the secret is unset, statejwt.New() returns an error and the surface that depends on it (install URL endpoint) will fail to start. That's intentional — install flows must not silently issue unsigned state values.
var SlackServicesModule = fx.Module("slack-services", sharedServices)
SlackServicesModule provides services for the dedicated Slack API.
var VCSWorkerModule = fx.Module("worker-vcs", fx.Provide(func(h *vcshelpers.Helpers) vcsactivities.GithubClient { return h }), fx.Provide(vcsactivities.New), fx.Provide(worker.AsWorker(vcsworker.New)), )
VCSWorkerModule provides the vcs namespace worker.
var WorkerInterceptorsModule = fx.Module("worker-interceptors", fx.Provide(interceptors.AsInterceptor(cctxinterceptor.New)), fx.Provide(interceptors.AsInterceptor(metricsinterceptor.New)), fx.Provide(interceptors.AsInterceptor(validateinterceptor.New)), )
WorkerInterceptorsModule provides interceptors for temporal workers.
Functions ¶
This section is empty.
Types ¶
This section is empty.