import type { AnyCredentialType, CollectionDefinition, DefinedCollection, EngineExecutionLimitsPolicyConfig, McpServerDeclaration, WorkflowDefinition, } from "@codemation/core"; import type { CodemationAuthConfig } from "./CodemationAuthConfig"; import type { CodemationAppContext } from "./CodemationAppContext"; import type { CodemationPlugin } from "./CodemationPlugin"; import type { CodemationLogConfig } from "./CodemationLogConfig"; import type { CodemationWhitelabelConfig } from "./CodemationWhitelabelConfig"; import type { CodemationWorkflowDiscovery } from "./CodemationWorkflowDiscovery"; export type CodemationEventBusKind = "memory" | "redis"; export type CodemationSchedulerKind = "local" | "bullmq"; export type CodemationDatabaseKind = "postgresql" | "sqlite"; export interface CodemationDatabaseConfig { readonly kind?: CodemationDatabaseKind; readonly url?: string; readonly sqliteFilePath?: string; } export interface CodemationEventBusConfig { readonly kind?: CodemationEventBusKind; readonly redisUrl?: string; readonly queuePrefix?: string; } export interface CodemationSchedulerConfig { readonly kind?: CodemationSchedulerKind; readonly queuePrefix?: string; readonly workerQueues?: ReadonlyArray; } export type CodemationAppSchedulerKind = "inline" | "queue"; export interface CodemationAppSchedulerConfig { readonly kind?: CodemationAppSchedulerKind; readonly queuePrefix?: string; readonly workerQueues?: ReadonlyArray; readonly redisUrl?: string; } export type CodemationEngineExecutionLimitsConfig = Readonly>; export interface CodemationAppDefinition { readonly frontendPort?: number; readonly databaseUrl?: string; readonly database?: CodemationDatabaseConfig; readonly scheduler?: CodemationAppSchedulerConfig; readonly auth?: CodemationAuthConfig; readonly whitelabel?: CodemationWhitelabelConfig; readonly log?: CodemationLogConfig; readonly engineExecutionLimits?: CodemationEngineExecutionLimitsConfig; } export interface CodemationApplicationRuntimeConfig { readonly frontendPort?: number; readonly database?: CodemationDatabaseConfig; readonly eventBus?: CodemationEventBusConfig; readonly scheduler?: CodemationSchedulerConfig; readonly engineExecutionLimits?: CodemationEngineExecutionLimitsConfig; } export interface CodemationConfig { readonly app?: CodemationAppDefinition; readonly codemationVersion?: string; readonly register?: (context: CodemationAppContext) => void; readonly runtime?: CodemationApplicationRuntimeConfig; readonly workflows?: ReadonlyArray; readonly workflowDiscovery?: CodemationWorkflowDiscovery; readonly plugins?: ReadonlyArray; readonly credentialTypes?: ReadonlyArray; readonly mcpServers?: ReadonlyArray; readonly collections?: ReadonlyArray; readonly whitelabel?: CodemationWhitelabelConfig; readonly auth?: CodemationAuthConfig; readonly log?: CodemationLogConfig; }