myc

Self-custodial remote signer for Radroots apps
git clone https://radroots.dev/git/myc.git
Log | Files | Refs | README | LICENSE

lib.rs (4162B)


      1 #![forbid(unsafe_code)]
      2 
      3 pub mod app;
      4 pub mod audit;
      5 mod audit_sqlite;
      6 pub mod cli;
      7 pub mod config;
      8 pub mod control;
      9 pub mod custody;
     10 pub mod discovery;
     11 pub mod error;
     12 pub mod identity_files;
     13 pub mod logging;
     14 pub mod operability;
     15 pub mod outbox;
     16 mod outbox_sqlite;
     17 mod paths;
     18 pub mod persistence;
     19 pub mod policy;
     20 pub mod transport;
     21 
     22 pub use app::{
     23     MycApp, MycRuntime, MycRuntimePaths, MycSignerBackend, MycSignerContext, MycStartupSnapshot,
     24 };
     25 pub use audit::{
     26     MycJsonlOperationAuditStore, MycOperationAuditKind, MycOperationAuditOutcome,
     27     MycOperationAuditRecord, MycOperationAuditStore,
     28 };
     29 pub use audit_sqlite::MycSqliteOperationAuditStore;
     30 pub use config::{
     31     DEFAULT_ENV_PATH, MycAuditConfig, MycConfig, MycConnectionApproval, MycCustodyConfig,
     32     MycDiscoveryConfig, MycDiscoveryMetadataConfig, MycIdentityBackend, MycIdentitySourceSpec,
     33     MycLoggingConfig, MycObservabilityConfig, MycPathsConfig, MycPersistenceConfig,
     34     MycPolicyConfig, MycRuntimeAuditBackend, MycRuntimeContractOutput, MycServiceConfig,
     35     MycSignerStateBackend, MycTransportConfig, MycTransportDeliveryPolicy,
     36 };
     37 pub use control::{MycAcceptedConnectionOutput, MycAuthorizedReplayOutput};
     38 pub use custody::{
     39     MycActiveIdentity, MycCustodyExportOutput, MycCustodyImportOutput, MycCustodyRotateOutput,
     40     MycIdentityProvider, MycIdentityStatusOutput, MycManagedAccountMutationOutput,
     41     MycManagedAccountSelectionState, MycManagedAccountsOutput,
     42 };
     43 pub use discovery::{
     44     MycDiscoveryBundleManifest, MycDiscoveryBundleOutput, MycDiscoveryContext,
     45     MycDiscoveryDiffOutput, MycDiscoveryLiveStatus, MycDiscoveryRelayFetchStatus,
     46     MycDiscoveryRelayRepairResult, MycDiscoveryRelayState, MycDiscoveryRelaySummary,
     47     MycDiscoveryRepairOutcome, MycDiscoveryRepairSummary, MycFetchedLiveNip89Output,
     48     MycLiveNip89Event, MycLiveNip89Group, MycLiveNip89RelayState, MycNip05Document,
     49     MycNip05DocumentSection, MycNip89HandlerDocument, MycNormalizedNip89Handler,
     50     MycPublishedNip89Output, MycRefreshedNip89Output, MycRenderedNip05Output,
     51     MycRenderedNip89Output, diff_live_nip89, fetch_live_nip89, publish_nip89_event, refresh_nip89,
     52     render_nip05_output, verify_bundle,
     53 };
     54 pub use error::MycError;
     55 pub use operability::{
     56     MYC_SIGNER_STATUS_CONTRACT_VERSION, MycAuditDecisionCounts, MycCustodyStatusOutput,
     57     MycDeliveryOutboxStatusOutput, MycDeliveryRecoveryStatusOutput, MycDiscoveryStatusOutput,
     58     MycMetricsSnapshot, MycOperationOutcomeCounts, MycPersistenceStatusOutput, MycRelayProbe,
     59     MycRelayProbeAvailability, MycRuntimeAuditPersistenceStatusOutput, MycRuntimeStatus,
     60     MycSignerBackendStatusOutput, MycSignerStatePersistenceStatusOutput,
     61     MycSqliteSchemaStatusOutput, MycStatusFullOutput, MycStatusSignerOutput,
     62     MycStatusSummaryOutput, MycTransportStatusOutput, collect_metrics, collect_status_full,
     63     collect_status_signer, collect_status_summary, render_metrics_text,
     64 };
     65 pub use outbox::{
     66     MycDeliveryOutboxJobId, MycDeliveryOutboxKind, MycDeliveryOutboxRecord,
     67     MycDeliveryOutboxStatus, MycDeliveryOutboxStore,
     68 };
     69 pub use outbox_sqlite::MycSqliteDeliveryOutboxStore;
     70 pub use persistence::{
     71     MycDeliveryOutboxVerifyRestoreOutput, MycPersistenceBackupOutput,
     72     MycPersistenceBackupStateOutput, MycPersistenceIdentityReferenceBackupOutput,
     73     MycPersistenceIdentityReferenceRestoreOutput, MycPersistenceImportJsonToSqliteOutput,
     74     MycPersistenceImportSelection, MycPersistenceRestoreOutput, MycPersistenceRestoreStateOutput,
     75     MycPersistenceVerifyRestoreOutput, MycRuntimeAuditImportOutput,
     76     MycRuntimeAuditVerifyRestoreOutput, MycSignerStateImportOutput,
     77     MycSignerStateVerifyRestoreOutput, backup_persistence, import_json_to_sqlite, restore_backup,
     78     verify_restored_state,
     79 };
     80 pub use policy::{MycConnectDecision, MycPolicyContext};
     81 pub use transport::{MycNostrTransport, MycRelayPublishResult, MycTransportSnapshot};
     82 
     83 pub async fn run() -> Result<(), MycError> {
     84     let config = MycConfig::load_from_default_env_path()?;
     85     logging::init_logging(&config.logging)?;
     86     MycApp::bootstrap(config)?.run().await
     87 }
     88 
     89 pub async fn run_cli() -> Result<(), MycError> {
     90     cli::run_from_env().await
     91 }