a3s_code_core/capability/
error.rs1use thiserror::Error;
2
3use super::CapabilityKind;
4
5#[derive(Clone, Debug, Error, Eq, PartialEq)]
8pub enum CapabilitySetError {
9 #[error("Capability field '{field}' is not a canonical identifier: {reason}")]
10 InvalidIdentifier {
11 field: &'static str,
12 reason: &'static str,
13 },
14 #[error("Capability field '{field}' is not a canonical SHA-256 digest")]
15 InvalidDigest { field: &'static str },
16 #[error("Capability generation field '{field}' is invalid")]
17 InvalidGeneration { field: &'static str },
18 #[error("Capability field '{field}' exceeds its bound of {max}")]
19 BoundExceeded { field: &'static str, max: usize },
20 #[error("Capability source '{source_id}' submitted an empty contribution")]
21 EmptyContribution { source_id: String },
22 #[error(
23 "Capability '{capability}' belongs to source '{actual_source}', not contribution source '{expected_source}'"
24 )]
25 SourceMismatch {
26 capability: String,
27 expected_source: String,
28 actual_source: String,
29 },
30 #[error("Capability source '{source_id}' was contributed more than once")]
31 DuplicateSource { source_id: String },
32 #[error(
33 "A capability set mixes A3S Use cursor identities (generation {expected_generation} vs {actual_generation}, capability revision mismatch: {revision_mismatch}, Registry revision mismatch: {registry_revision_mismatch})"
34 )]
35 MixedUseGeneration {
36 expected_generation: u64,
37 actual_generation: u64,
38 revision_mismatch: bool,
39 registry_revision_mismatch: bool,
40 },
41 #[error("Capability '{capability}' was contributed more than once")]
42 DuplicateCapability { capability: String },
43 #[error("Capability '{capability}' repeats dependency '{dependency}'")]
44 DuplicateDependency {
45 capability: String,
46 dependency: String,
47 },
48 #[error("Capability '{capability}' depends on itself")]
49 SelfDependency { capability: String },
50 #[error("Capability '{capability}' depends on missing capability '{dependency}'")]
51 MissingDependency {
52 capability: String,
53 dependency: String,
54 },
55 #[error("External {kind} capability '{public_name}' cannot shadow a built-in")]
56 BuiltinShadow {
57 kind: CapabilityKind,
58 public_name: String,
59 },
60 #[error("Multiple {kind} capabilities publish the same name '{public_name}'")]
61 PublicNameConflict {
62 kind: CapabilityKind,
63 public_name: String,
64 },
65 #[error("The canonical capability set could not be encoded: {0}")]
66 CanonicalEncoding(String),
67}