#![allow(
missing_docs,
clippy::doc_markdown,
clippy::struct_excessive_bools,
clippy::derive_partial_eq_without_eq
)]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Adapter {
pub author: idiolect_records::Did,
pub framework: String,
pub invocation_protocol: AdapterInvocationProtocol,
pub isolation: AdapterIsolation,
pub occurred_at: idiolect_records::Datetime,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub verification: Option<idiolect_records::AtUri>,
pub version_range: String,
}
impl crate::Record for Adapter {
const NSID: &'static str = "dev.idiolect.adapter";
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AdapterInvocationProtocol {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub entry_point: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub input_schema: Option<crate::generated::dev::idiolect::defs::SchemaRef>,
pub kind: AdapterInvocationProtocolKind,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub output_schema: Option<crate::generated::dev::idiolect::defs::SchemaRef>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum AdapterInvocationProtocolKind {
Subprocess,
Http,
Wasm,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AdapterIsolation {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub filesystem_policy: Option<AdapterIsolationFilesystemPolicy>,
pub kind: AdapterIsolationKind,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub network_policy: Option<AdapterIsolationNetworkPolicy>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub resource_limits: Option<AdapterIsolationResourceLimits>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum AdapterIsolationFilesystemPolicy {
Readonly,
Scratch,
WritableSubtree,
Full,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum AdapterIsolationKind {
None,
Process,
Container,
Vm,
WasmSandbox,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum AdapterIsolationNetworkPolicy {
None,
EgressDenylist,
EgressAllowlist,
Full,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AdapterIsolationResourceLimits {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_cpu_seconds: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_memory_bytes: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_wall_seconds: Option<i64>,
}