Extract Storage trait into opake-core, fix delete_account semantics and error bridging
Move config, identity, and session types plus the Storage trait from
opake-cli into opake-core so the web frontend shares the same contract.
FileStorage (CLI/filesystem) and IndexedDbStorage (browser/Dexie.js)
both implement it.
- Rename trait method delete_account → remove_account with full
semantics: config mutation + data cleanup + persistence
- Config::set_default uses validated BTreeMap key instead of
re-stringifying the input DID
- Remove 13 redundant .map_err(|e| anyhow::anyhow!("{e}")) calls —
opake_core::Error implements std::error::Error via thiserror so ?
converts directly into anyhow::Error
- IndexedDbStorage.removeAccount mutates config atomically in a
single transaction across all three stores
- CLI commands accept FileStorage by reference, no global state
sans-self.org
4c3a4329
86fc5149