Skip to main content

aion_server/config/
mod.rs

1//! Runtime configuration loading and validation for `aion-server`.
2//!
3//! The config surface is split across cohesive submodules and re-exported here
4//! in full, so every `crate::config::X` path resolves identically to the old
5//! single-file layout:
6//!
7//! - [`defaults`] — default values and operator-facing validation messages.
8//! - [`sections`] — the typed `[section]` sub-configurations and their defaults.
9//! - [`runtime`] — the [`RuntimeConfig`] runtime view and [`CliOverrides`].
10//! - [`load`] — [`ServerConfig`], its load/merge/validate pipeline, and the
11//!   workflow-package discovery helpers.
12//! - [`env`] / [`file`] — the environment-variable and TOML-file loaders.
13//! - [`home`] — the single typed Aion-home resolver.
14
15/// Environment variable configuration loader.
16pub mod env;
17/// File-based configuration loader.
18pub mod file;
19
20mod defaults;
21mod error;
22mod home;
23mod load;
24mod resolution;
25mod runtime;
26mod scaffold;
27mod sections;
28mod worker_supervision;
29
30pub(crate) use defaults::{
31    AUTHORING_GLEAM_PATH_EMPTY, AUTHORING_PROJECT_ROOT_REQUIRED,
32    CLUSTER_BROADCAST_CAPACITY_REQUIRED, CORS_ALLOWED_ORIGIN_INVALID,
33    DEPLOY_MAX_ARCHIVE_BYTES_REQUIRED, DEPLOY_MAX_INFLATED_BYTES_REQUIRED,
34    EVENT_BROADCAST_CAPACITY_REQUIRED, LEGACY_AUTHORING_WORKSPACE_DIR, LEGACY_HAEMATITE_DATA_DIR,
35    OUTBOX_BACKOFF_BASE_REQUIRED, OUTBOX_BACKOFF_MAX_REQUIRED, OUTBOX_BACKOFF_MULTIPLIER_REQUIRED,
36    OUTBOX_BATCH_SIZE_REQUIRED, OUTBOX_MAX_ATTEMPTS_REQUIRED, OUTBOX_POLL_INTERVAL_REQUIRED,
37    OUTBOX_RECONCILE_INTERVAL_REQUIRED, OUTBOX_RECONCILE_STALE_AFTER_REQUIRED,
38    QUERY_TIMEOUT_REQUIRED,
39};
40pub use defaults::{
41    DEFAULT_AUTHORING_WORKSPACE_DIR, DEFAULT_CLUSTER_BROADCAST_CAPACITY,
42    DEFAULT_DEPLOY_MAX_ARCHIVE_BYTES, DEFAULT_DEPLOY_MAX_INFLATED_BYTES,
43    DEFAULT_EVENT_BROADCAST_CAPACITY, DEFAULT_FAILOVER_CONFIRMATIONS,
44    DEFAULT_FAILOVER_POLL_INTERVAL_MS, DEFAULT_HAEMATITE_DATA_DIR,
45    DEFAULT_MAX_IN_FLIGHT_ACTIVITIES, DEFAULT_MCP_AWAIT_POLL_INTERVAL_MS,
46    DEFAULT_MCP_DISCOVER_TTL_MS, DEFAULT_MCP_TASK_POLL_INTERVAL_MS, DEFAULT_MCP_TASK_TTL_MS,
47    DEFAULT_MCP_TOOLS_LIST_TTL_MS, DEFAULT_OBSERVABILITY_MAX_EVENT_BYTES,
48    DEFAULT_OBSERVABILITY_MAX_STREAM_EVENTS, DEFAULT_OUTBOX_BACKOFF_BASE_MS,
49    DEFAULT_OUTBOX_BACKOFF_MAX_MS, DEFAULT_OUTBOX_BACKOFF_MULTIPLIER, DEFAULT_OUTBOX_BATCH_SIZE,
50    DEFAULT_OUTBOX_MAX_ATTEMPTS, DEFAULT_OUTBOX_POLL_INTERVAL_MS, DEFAULT_QUERY_TIMEOUT_MS,
51};
52pub(crate) use error::config_error;
53pub use home::{AionHome, HomeSource, aion_home};
54pub use load::ServerConfig;
55pub(crate) use resolution::{ConfigResolution, ConfigSource};
56pub use runtime::{CliOverrides, RuntimeConfig};
57pub use scaffold::FIRST_RUN_CONFIG;
58pub(crate) use scaffold::load_or_scaffold;
59pub use sections::{
60    AuthConfig, AuthoringConfig, AutoCreate, ClusterConfig, ClusterPeer, DeployConfig, DevConfig,
61    DrainConfig, ListenConfig, McpConfig, MetricsConfig, NamespaceConfig, NamespaceMode,
62    NamespacesConfig, ObservabilityConfig, OpsConsoleAssetSource, OpsConsoleConfig, OutboxConfig,
63    OutboxTransport, ResolvedMcpConfig, RuntimeSection, ServerSection, StoreBackend, StoreConfig,
64    TlsConfig, WebSocketConfig, WorkerConfig,
65};
66pub use worker_supervision::WorkerSupervisionConfig;