1use crate::errors::LllvError;
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct CapsuleManifest {
7 pub vector_id: String,
8 pub source_uri: String,
9 pub mime: String,
10 pub content_hash: String, pub dim: u16,
12 pub quant: String, pub encoder: String, pub policy_ref: String, pub ts_ingest: String, }
17
18impl CapsuleManifest {
19 #[must_use]
20 pub fn minimal(id: &str, mime: &str, dim: u16, quant: &str) -> Self {
21 Self {
22 vector_id: id.into(),
23 source_uri: String::new(),
24 mime: mime.into(),
25 content_hash: String::new(),
26 dim,
27 quant: quant.into(),
28 encoder: String::new(),
29 policy_ref: String::new(),
30 ts_ingest: String::new(),
31 }
32 }
33}
34
35#[cfg(feature = "manifest")]
36pub fn seal_manifest(
42 mf: &CapsuleManifest,
43 sk: &ed25519_dalek::SigningKey,
44) -> Result<json_atomic::SignedFact, LllvError> {
45 use json_atomic::seal_value;
46 seal_value(mf, sk).map_err(|_| LllvError::Serde("seal".into()))
47}