use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
pub enum Kind {
Request,
Action,
Response,
Result,
Summary,
Approval,
Capability,
Usage,
Refusal,
Verdict,
Plan,
Retraction,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
pub enum RefType {
Cause,
Use,
Require,
Replace,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
pub enum AuthorType {
User,
Provider,
System,
Executor,
Verifier,
}
pub fn allowed_author_types(kind: Kind) -> &'static [AuthorType] {
match kind {
Kind::Request => &[AuthorType::User],
Kind::Action => &[AuthorType::Provider],
Kind::Response => &[AuthorType::Provider],
Kind::Result => &[AuthorType::Executor],
Kind::Summary => &[AuthorType::Provider],
Kind::Approval => &[AuthorType::User],
Kind::Capability => &[AuthorType::User, AuthorType::System],
Kind::Usage => &[AuthorType::Provider, AuthorType::System],
Kind::Refusal => &[AuthorType::User, AuthorType::System],
Kind::Verdict => &[AuthorType::Verifier],
Kind::Plan => &[AuthorType::Provider],
Kind::Retraction => &[AuthorType::User, AuthorType::Provider, AuthorType::System],
}
}
pub fn requires_registered_author(kind: Kind) -> bool {
match kind {
Kind::Request
| Kind::Action
| Kind::Approval
| Kind::Capability
| Kind::Response
| Kind::Result
| Kind::Plan
| Kind::Summary
| Kind::Usage
| Kind::Refusal
| Kind::Retraction => true,
Kind::Verdict => false,
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
pub enum VerdictResult {
Accept,
Reject,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
pub enum ReasonCode {
UnknownSchema,
KindSchemaMismatch,
SignatureMissing,
SignatureInvalid,
RefUnresolved,
RefCrossSpace,
RequestMissing,
CapabilityMissing,
CapabilityDenied,
ApprovalMissing,
ApprovalExpired,
ActionClosed,
ReplacementInvalid,
ExternalReceiptRequired,
EvidenceBelowThreshold,
Refused,
InvalidPayload,
InvalidCheckpoint,
AuthorRoleInvalid,
AuthorityRefMissing,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
pub enum CapabilityMode {
Auto,
Ask,
Deny,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
pub enum ExecMode {
Internal,
External,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
pub enum ResultStatus {
Success,
Failure,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
pub enum SummaryType {
Procedure,
Pattern,
Lesson,
StateSnapshot,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
pub enum UsageOutcome {
Done,
NotDone,
NoChange,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
pub enum RefusalTarget {
Action,
Request,
VerifiedEffect,
}