#[cfg(feature = "admin")]
pub mod admin;
#[cfg(feature = "mcp")]
pub mod agents;
pub mod auth;
pub mod auth_backends;
pub mod auth_routes;
pub mod bootstrap;
pub mod branding;
pub mod database_pools;
pub mod decommission;
mod error;
pub mod impersonation_handoff;
pub mod jwt_lifecycle;
pub mod manage;
#[cfg(all(feature = "tenancy", feature = "sso"))]
pub mod member_auth;
pub(crate) use crate::manage_interactive;
pub mod middleware;
pub mod migrate;
pub mod migrate_run;
pub mod operator_console;
pub mod operators;
mod org;
pub mod org_edit;
pub mod org_host;
pub mod password;
pub mod permissions;
mod pools;
pub mod preflight;
pub mod principal;
pub mod provision;
pub mod provision_store;
#[cfg(feature = "webhook")]
pub mod provision_webhook;
mod resolver;
mod resolver_cache;
pub mod routes;
mod secrets;
pub mod session;
#[cfg(feature = "admin-sso")]
pub(crate) mod sso;
pub mod sweep;
pub mod server;
pub mod tenant_console;
#[cfg(feature = "mcp")]
pub use agents::{
add_skill_resource_pool, agent_auth_state_pool, agent_owner_is_active_pool,
agent_token_still_valid_pool, authenticate_agent_by_prefix_pool, authenticate_agent_pool,
create_agent_pool, create_skill_pool, create_user_key_pool, delete_user_keys_pool,
grant_skill_pool, list_agents_pool, list_skills_pool, list_user_keys_pool,
map_skill_to_permission_pool, resolve_agent_grants_pool, resolve_user_agent_grants_pool,
resources_for_skills_pool, revoke_skill_pool, revoke_user_key_pool, rotate_agent_secret_pool,
skills_by_codenames_pool, unmap_skill_from_permission_pool, Agent, AgentError, AgentGrant,
AgentSecret, AgentSkill, AgentSkillPermission, AgentSkillResource, AgentSkillTool,
};
#[cfg(feature = "postgres")]
pub use auth::{authenticate_operator, authenticate_user};
pub use auth::{
authenticate_operator_pool, authenticate_user_pool, validate_tenant_user_schema, Operator,
TenantUserModel, User, REQUIRED_USER_COLUMNS,
};
#[cfg(feature = "postgres")]
pub use auth_backends::ensure_api_keys_table;
pub use auth_backends::{
create_api_key, ensure_api_keys_table_pool, ApiKeyBackend, AuthBackend, AuthError, AuthUser,
BoxedBackend, JwtBackend, ModelBackend,
};
pub use bootstrap::{init_tenancy, init_tenancy_with, InitTenancyReport};
pub use middleware::{AuthenticatedUser, CurrentUser, RouterAuthExt};
pub use principal::{OptionalPrincipal, Principal, PrincipalKind, TenantSlug};
#[cfg(feature = "postgres")]
pub use permissions::{
assign_role, auto_create_permissions, clear_user_perm, get_or_create_role, grant_role_perm,
has_all_perms, has_any_perm, has_perm, remove_role, revoke_role_perm, set_user_perm,
user_permissions, user_roles,
};
pub use permissions::{
auto_create_permissions_pool, clear_user_perm_pool, create_role_pool, ensure_tables_pool,
get_or_create_role_pool, grant_role_perm_pool, has_all_perms_pool, has_any_perm_pool,
has_perm_pool, model_codenames, revoke_role_perm_pool, set_user_perm_pool,
user_permissions_pool, user_roles_pool, user_roles_qs_pool,
};
pub use database_pools::{DatabaseConn, DatabasePool, DatabasePools};
pub use error::TenancyError;
#[cfg(all(feature = "tenancy", feature = "sso"))]
pub use member_auth::{member_sso_router, CurrentMember, MemberAuthConfig, MEMBER_COOKIE};
pub use migrate::{
migrate_one_tenant, migrate_registry, migrate_registry_pool, migrate_tenants_db,
migrate_tenants_db_with_progress, migrate_tenants_dyn, migrate_tenants_dyn_with_progress,
Chain, TenantMigrationEvent, TenantMigrationObserver, TenantMigrationOutcome,
TenantMigrationReport,
};
#[cfg(feature = "postgres")]
pub use migrate::{migrate_tenants, migrate_tenants_with_progress};
pub use org::generation as org_generation;
pub use org::{BackendKind, Org, OrgGeneration, StorageMode};
pub use org_host::{
add_host, list_for_org, normalize_hostname, remove_host, set_host_enabled, HostError, OrgHost,
TenantHost,
};
pub use pools::{
DefaultTenantDb, PrewarmReport, TenantConn, TenantPool, TenantPoolInvalidator, TenantPools,
TenantPoolsConfig,
};
pub(crate) use resolver::host_is_apex;
pub use resolver::{
invalidate_host_cache, invalidate_org_cache, ChainResolver, HeaderResolver, ListenerPort,
OrgResolver, PathPrefixResolver, PortResolver, RegisteredHostResolver, SubdomainResolver,
};
#[cfg(all(test, feature = "sqlite"))]
pub(crate) use resolver::isolated as isolated_resolver;
#[cfg(any(test, feature = "testkit"))]
pub(crate) use resolver::{
expire_generation, reset_generation, reset_org_cache, reset_registry_breaker,
};
pub use routes::RouteConfig;
pub use secrets::{
ChainSecretsResolver, EnvSecretsResolver, LiteralSecretsResolver, SecretsError, SecretsResolver,
};
pub use sweep::{active_tenants, for_each_tenant, SweepError, TenantOutcome, TenantSweep};