import type { AnyCredentialType, CollectionDefinition, McpServerDeclaration, WorkflowDefinition, } from "@codemation/core"; import type { CodemationContainerRegistration } from "../../bootstrap/CodemationContainerRegistration"; import type { CodemationPlugin } from "./CodemationPlugin"; import type { CodemationDatabaseConfig, CodemationEngineExecutionLimitsConfig, CodemationEventBusKind, CodemationSchedulerKind, } from "./CodemationConfig"; import type { CodemationLogConfig } from "./CodemationLogConfig"; import type { CodemationAuthConfig } from "./CodemationAuthConfig"; import type { CodemationWhitelabelConfig } from "./CodemationWhitelabelConfig"; export type AppPersistenceConfig = | Readonly<{ kind: "none" }> | Readonly<{ kind: "postgresql"; databaseUrl: string }> | Readonly<{ kind: "sqlite"; databaseFilePath: string }>; export type AppPluginLoadSummary = Readonly<{ packageName: string; source: "configured" | "discovered"; }>; export interface AppConfig { readonly consumerRoot: string; readonly repoRoot: string; readonly env: Readonly; readonly workflowSources: ReadonlyArray; readonly workflowDiscoveryDirectories?: ReadonlyArray; readonly workflows: ReadonlyArray; readonly containerRegistrations: ReadonlyArray>; readonly credentialTypes: ReadonlyArray; readonly collections: ReadonlyArray; readonly plugins: ReadonlyArray; readonly pluginLoadSummary?: ReadonlyArray; readonly mcpServers: ReadonlyArray; readonly hasConfiguredCredentialSessionServiceRegistration: boolean; readonly log?: CodemationLogConfig; readonly engineExecutionLimits?: CodemationEngineExecutionLimitsConfig; readonly databaseUrl?: string; readonly database?: CodemationDatabaseConfig; readonly persistence: AppPersistenceConfig; readonly scheduler: Readonly<{ kind: CodemationSchedulerKind; queuePrefix?: string; workerQueues: ReadonlyArray; redisUrl?: string; }>; readonly eventing: Readonly<{ kind: CodemationEventBusKind; queuePrefix?: string; redisUrl?: string; }>; readonly auth?: CodemationAuthConfig; readonly whitelabel: CodemationWhitelabelConfig; }