Addresses review findings:
- Remove insecure automatic encrypted-file credential-store fallback.
now only uses real OS/keyctl-backed stores,
or remains unavailable. Headless users must use explicit
HERMES_KEYSTORE_PASSPHRASE if desired.
- Add shared wallet runtime so tools/CLI/approval use the same configured
providers and persisted policy state.
- Inject keystore-backed secrets into gateway/headless startup too, so
migrated .env stubs don't break messaging deployments.
- Persist wallet policy state (freeze, daily totals, rate-limit timestamps,
cooldown timestamps) across invocations.
- Persist transaction history to disk across invocations.
- Make owner-approved sends execute through the same runtime/policy path and
record policy state after successful approved sends.
- Fix wallet export by allowing explicit CLI export reads of sealed keys via
dedicated requester path () instead of generic CLI reads.
- Make CLI wallet sends evaluate policy before execution and honor freeze.
- Align docs with actual crypto primitive (XSalsa20-Poly1305 via SecretBox)
and current policy-config scope.
Validation:
- 129 tests passing
- freeze persistence verified manually
- wallet export verified manually