use gatekeep::{FactId, GatekeepError, SubjectSlot};
use keepsake::KeepsakeError;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum KeepsakeResolveError<E> {
#[error(transparent)]
Subject(#[from] KeepsakeError),
#[error("keepsake relation source failed")]
Source(#[source] E),
#[error(transparent)]
Gatekeep(#[from] GatekeepError),
}
#[derive(Debug, Error, Clone, PartialEq, Eq)]
pub enum KeepsakeTargetError {
#[error("no keepsake binding configured for fact {fact}")]
MissingBinding {
fact: FactId,
},
#[error("context is missing subject slot {slot} for fact {fact}")]
MissingSubjectSlot {
fact: FactId,
slot: SubjectSlot,
},
#[error("keepsake subject validation failed for fact {fact}")]
Subject {
fact: FactId,
#[source]
source: KeepsakeError,
},
}