mod builder;
mod context;
mod context_traits;
mod database_context;
mod error;
pub mod managed;
mod registry;
pub mod reporting;
pub mod services_reconcile;
mod startup_validation;
pub mod trace;
mod validation;
mod wellknown;
pub use builder::{AppContextBuilder, discover_models};
pub use context::{AppContext, ConfigPlane, DataPlane, Plugins, ShutdownRequest, Subsystems};
pub use database_context::DatabaseContext;
pub use error::{RuntimeError, RuntimeResult};
pub use registry::{ModuleApiRegistration, ModuleApiRegistry, ModuleType, WellKnownRoute};
pub use startup_validation::{
ExtensionConfigOutcome, FilesConfigValidator, StartupValidator, collect_manifest_errors,
display_validation_report, display_validation_warnings, merge_mcp_errors,
validate_extension_configs,
};
pub use systemprompt_database::MigrationConfig;
pub use trace::{
AiRequestClientEvidence, AiRequestDetail, AiRequestFilter, AiRequestInfo, AiRequestListItem,
AiRequestStats, AiRequestSummary, AiTraceService, AuditLookupResult, AuditPage,
AuditToolCallRow, ConversationMessage, ExecutionStep, ExecutionStepSummary, LevelCount,
LinkedMcpCall, LogSearchFilter, LogSearchItem, LogTimeRange, McpExecutionSummary,
McpToolExecution, ModelStatsRow, ModuleCount, ProviderStatsRow, RequestCursor,
RequestCursorError, TaskArtifact, TaskInfo, ToolExecutionFilter, ToolExecutionItem,
ToolLogEntry, TraceError, TraceEvent, TraceListFilter, TraceListItem, TraceQueryService,
};
pub use validation::{validate_database_path, validate_system};
pub use wellknown::{WellKnownMetadata, get_wellknown_metadata};
pub use systemprompt_models::modules::ServiceCategory;
#[macro_export]
macro_rules! register_module_api {
($module_name:literal, $category:expr, $router_fn:expr, $auth_required:expr, $module_type:expr) => {
inventory::submit! {
$crate::ModuleApiRegistration {
module_name: $module_name,
category: $category,
module_type: $module_type,
router_fn: $router_fn,
auth_required: $auth_required,
}
}
};
($module_name:literal, $category:expr, $router_fn:expr, $auth_required:expr) => {
inventory::submit! {
$crate::ModuleApiRegistration {
module_name: $module_name,
category: $category,
module_type: $crate::ModuleType::Regular,
router_fn: $router_fn,
auth_required: $auth_required,
}
}
};
}
#[macro_export]
macro_rules! register_wellknown_route {
($path:literal, $handler:expr, $methods:expr, name: $name:literal, description: $desc:literal) => {
inventory::submit! {
$crate::WellKnownRoute {
path: $path,
handler_fn: $handler,
methods: $methods,
}
}
inventory::submit! {
$crate::WellKnownMetadata::new($path, $name, $desc)
}
};
($path:literal, $handler:expr, $methods:expr) => {
inventory::submit! {
$crate::WellKnownRoute {
path: $path,
handler_fn: $handler,
methods: $methods,
}
}
};
}