Skip to main content

systemprompt_runtime/
lib.rs

1mod context;
2mod database_context;
3mod installation;
4mod registry;
5mod span;
6mod startup_validation;
7mod validation;
8mod wellknown;
9
10pub use context::{AppContext, AppContextBuilder};
11pub use database_context::DatabaseContext;
12pub use installation::{install_module, install_module_with_db};
13pub use registry::{ModuleApiRegistration, ModuleApiRegistry, ModuleRuntime, WellKnownRoute};
14pub use span::create_request_span;
15pub use startup_validation::{
16    display_validation_report, display_validation_warnings, FilesConfigValidator, StartupValidator,
17};
18pub use validation::validate_system;
19pub use wellknown::{get_wellknown_metadata, WellKnownMetadata};
20
21pub use systemprompt_models::modules::{
22    ApiConfig, Module, ModuleDefinition, ModulePermission, ModuleSchema, ModuleSeed, ModuleType,
23    Modules, ServiceCategory,
24};
25
26#[macro_export]
27macro_rules! register_module_api {
28    ($module_name:literal, $category:expr, $router_fn:expr, $auth_required:expr, $module_type:expr) => {
29        inventory::submit! {
30            $crate::ModuleApiRegistration {
31                module_name: $module_name,
32                category: $category,
33                module_type: $module_type,
34                router_fn: $router_fn,
35                auth_required: $auth_required,
36            }
37        }
38    };
39    ($module_name:literal, $category:expr, $router_fn:expr, $auth_required:expr) => {
40        inventory::submit! {
41            $crate::ModuleApiRegistration {
42                module_name: $module_name,
43                category: $category,
44                module_type: $crate::ModuleType::Regular,
45                router_fn: $router_fn,
46                auth_required: $auth_required,
47            }
48        }
49    };
50}
51
52#[macro_export]
53macro_rules! register_wellknown_route {
54    ($path:literal, $handler:expr, $methods:expr, name: $name:literal, description: $desc:literal) => {
55        inventory::submit! {
56            $crate::WellKnownRoute {
57                path: $path,
58                handler_fn: $handler,
59                methods: $methods,
60            }
61        }
62
63        inventory::submit! {
64            $crate::WellKnownMetadata::new($path, $name, $desc)
65        }
66    };
67
68    ($path:literal, $handler:expr, $methods:expr) => {
69        inventory::submit! {
70            $crate::WellKnownRoute {
71                path: $path,
72                handler_fn: $handler,
73                methods: $methods,
74            }
75        }
76    };
77}