delegated-redis 0.2.2

Redis-backed trust state for delegated capability evaluation
Documentation
# delegated-redis

[![crates.io](https://img.shields.io/crates/v/delegated-redis.svg)](https://crates.io/crates/delegated-redis)
[![docs.rs](https://img.shields.io/docsrs/delegated-redis)](https://docs.rs/delegated-redis)

Redis-backed [TrustStateStore](https://docs.rs/delegated/latest/delegated/trait.TrustStateStore.html)
and [TrustStateAdmin](https://docs.rs/delegated/latest/delegated/trait.TrustStateAdmin.html)
for multi-instance [delegated](https://docs.rs/delegated) deployments.

## Install

```toml
[dependencies]
delegated = "0.2"
delegated-redis = "0.2"
```

## Usage

```rust
use chrono::Utc;
use delegated::{Evaluator, OperationContext, PinnedIssuerKeys};
use delegated_redis::RedisTrustState;

# fn authorize(request: &[u8]) -> Result<bool, Box<dyn std::error::Error>> {
let keys = PinnedIssuerKeys::new();
// load trusted issuer keys into `keys` from configuration

let state = RedisTrustState::new("redis://127.0.0.1/")?;
let operation = OperationContext::new("calendar-api", "calendar.create")
    .with_resource("calendar:alice");

let (decision, _audit) =
    Evaluator::new(&keys, &state).evaluate(request, &operation, Utc::now());
# Ok(decision.allowed)
# }
```

Administrative mutations:

```rust
use delegated::TrustStateAdmin;
use delegated_redis::RedisTrustState;

# fn suspend_agent() -> Result<(), delegated::TrustStateError> {
let state = RedisTrustState::with_prefix("redis://127.0.0.1/", "prod-api")?;
state.revoke_token("https://issuer.example", "token-123")?;
state.deny_agent("https://issuer.example", "agent:compromised")?;
# Ok(())
# }
```

Nonce consumption uses `SET key NX EX ttl` so concurrent evaluators share replay
protection. Revocation and emergency-deny entries persist until operators remove
them.

## Documentation

- [API reference]https://docs.rs/delegated-redis
- [Operations guide]https://github.com/abendrothj/delegated/blob/main/crates/delegated-redis/OPERATIONS.md
- [Integration guide (Redis section)]https://github.com/abendrothj/delegated/blob/main/docs/INTEGRATION.md#redis-trust-state-delegated-redis
- [Reference stack example]https://github.com/abendrothj/delegated/tree/main/examples/reference-stack

## Requirements

- Redis 6+ reachable from every evaluator instance
- A unique key prefix per environment when multiple services share one cluster
- The core `delegated` crate for evaluation