#![allow(dead_code)]
use crate::tokens::Trivia;
#[derive(Debug, Clone, Default)]
pub struct Loc {
pub line: u32,
pub column: u32,
}
#[derive(Debug, Clone, Default)]
pub struct DeclarationTrivia {
pub leading: Vec<Trivia>,
pub trailing: Vec<Trivia>,
}
#[derive(Debug)]
pub struct Program {
pub declarations: Vec<Declaration>,
pub declaration_trivia: Vec<DeclarationTrivia>,
pub loc: Loc,
}
#[derive(Debug)]
pub enum Declaration {
Import(ImportNode),
Persona(PersonaDefinition),
Context(ContextDefinition),
Anchor(AnchorConstraint),
Memory(MemoryDefinition),
Tool(ToolDefinition),
Type(TypeDefinition),
Flow(FlowDefinition),
Effect(EffectDefinition),
Intent(IntentNode),
Run(RunStatement),
Epistemic(EpistemicBlock),
Let(LetStatement),
LambdaData(LambdaDataDefinition),
Agent(AgentDefinition),
Shield(ShieldDefinition),
Window(WindowDefinition),
Budget(BudgetBlock),
Pix(PixDefinition),
Ledger(LedgerDefinition),
Psyche(PsycheDefinition),
Corpus(CorpusDefinition),
Dataspace(DataspaceDefinition),
Ots(OtsDefinition),
Mandate(MandateDefinition),
Compute(ComputeDefinition),
Daemon(DaemonDefinition),
AxonStore(AxonStoreDefinition),
AxonEndpoint(AxonEndpointDefinition),
Extension(ExtensionDefinition),
Resource(ResourceDefinition),
Fabric(FabricDefinition),
Manifest(ManifestDefinition),
Observe(ObserveDefinition),
Reconcile(ReconcileDefinition),
Lease(LeaseDefinition),
Ensemble(EnsembleDefinition),
Session(SessionDefinition),
Topology(TopologyDefinition),
Immune(ImmuneDefinition),
Reflex(ReflexDefinition),
Heal(HealDefinition),
Component(ComponentDefinition),
View(ViewDefinition),
Channel(ChannelDefinition),
Socket(SocketDefinition),
Upstream(UpstreamDefinition),
Voice(VoiceDefinition),
Cors(CorsDefinition),
Cache(CacheDefinition),
Savant(SavantDefinition),
Synth(SynthDefinition),
Scope(ScopeDefinition),
Credential(CredentialDefinition),
Observable(ObservableDefinition),
Witness(WitnessDefinition),
Document(DocumentDefinition),
Deliver(DeliverDefinition),
Notify(NotifyDefinition),
Generic(GenericDeclaration),
}
pub fn declaration_surface(decl: &Declaration) -> Option<(String, String, Loc)> {
match decl {
Declaration::Import(_)
| Declaration::Run(_)
| Declaration::Let(_)
| Declaration::Epistemic(_) => None,
Declaration::Persona(n) => Some((n.name.clone(), "persona".into(), n.loc.clone())),
Declaration::Context(n) => Some((n.name.clone(), "context".into(), n.loc.clone())),
Declaration::Anchor(n) => Some((n.name.clone(), "anchor".into(), n.loc.clone())),
Declaration::Memory(n) => Some((n.name.clone(), "memory".into(), n.loc.clone())),
Declaration::Tool(n) => Some((n.name.clone(), "tool".into(), n.loc.clone())),
Declaration::Type(n) => Some((n.name.clone(), "type".into(), n.loc.clone())),
Declaration::Flow(n) => Some((n.name.clone(), "flow".into(), n.loc.clone())),
Declaration::Effect(n) => Some((n.name.clone(), "effect".into(), n.loc.clone())),
Declaration::Intent(n) => Some((n.name.clone(), "intent".into(), n.loc.clone())),
Declaration::LambdaData(n) => Some((n.name.clone(), "lambda_data".into(), n.loc.clone())),
Declaration::Agent(n) => Some((n.name.clone(), "agent".into(), n.loc.clone())),
Declaration::Shield(n) => Some((n.name.clone(), "shield".into(), n.loc.clone())),
Declaration::Window(n) => Some((n.name.clone(), "window".into(), n.loc.clone())),
Declaration::Budget(n) => Some((n.name.clone(), "budget".into(), n.loc.clone())),
Declaration::Pix(n) => Some((n.name.clone(), "pix".into(), n.loc.clone())),
Declaration::Ledger(n) => Some((n.name.clone(), "ledger".into(), n.loc.clone())),
Declaration::Psyche(n) => Some((n.name.clone(), "psyche".into(), n.loc.clone())),
Declaration::Corpus(n) => Some((n.name.clone(), "corpus".into(), n.loc.clone())),
Declaration::Dataspace(n) => Some((n.name.clone(), "dataspace".into(), n.loc.clone())),
Declaration::Ots(n) => Some((n.name.clone(), "ots".into(), n.loc.clone())),
Declaration::Mandate(n) => Some((n.name.clone(), "mandate".into(), n.loc.clone())),
Declaration::Compute(n) => Some((n.name.clone(), "compute".into(), n.loc.clone())),
Declaration::Daemon(n) => Some((n.name.clone(), "daemon".into(), n.loc.clone())),
Declaration::AxonStore(n) => Some((n.name.clone(), "axonstore".into(), n.loc.clone())),
Declaration::AxonEndpoint(n) => {
Some((n.name.clone(), "axonendpoint".into(), n.loc.clone()))
}
Declaration::Extension(n) => Some((n.name.clone(), "extension".into(), n.loc.clone())),
Declaration::Resource(n) => Some((n.name.clone(), "resource".into(), n.loc.clone())),
Declaration::Fabric(n) => Some((n.name.clone(), "fabric".into(), n.loc.clone())),
Declaration::Manifest(n) => Some((n.name.clone(), "manifest".into(), n.loc.clone())),
Declaration::Observe(n) => Some((n.name.clone(), "observe".into(), n.loc.clone())),
Declaration::Reconcile(n) => Some((n.name.clone(), "reconcile".into(), n.loc.clone())),
Declaration::Lease(n) => Some((n.name.clone(), "lease".into(), n.loc.clone())),
Declaration::Ensemble(n) => Some((n.name.clone(), "ensemble".into(), n.loc.clone())),
Declaration::Session(n) => Some((n.name.clone(), "session".into(), n.loc.clone())),
Declaration::Topology(n) => Some((n.name.clone(), "topology".into(), n.loc.clone())),
Declaration::Immune(n) => Some((n.name.clone(), "immune".into(), n.loc.clone())),
Declaration::Reflex(n) => Some((n.name.clone(), "reflex".into(), n.loc.clone())),
Declaration::Heal(n) => Some((n.name.clone(), "heal".into(), n.loc.clone())),
Declaration::Component(n) => Some((n.name.clone(), "component".into(), n.loc.clone())),
Declaration::View(n) => Some((n.name.clone(), "view".into(), n.loc.clone())),
Declaration::Channel(n) => Some((n.name.clone(), "channel".into(), n.loc.clone())),
Declaration::Socket(n) => Some((n.name.clone(), "socket".into(), n.loc.clone())),
Declaration::Upstream(n) => Some((n.name.clone(), "upstream".into(), n.loc.clone())),
Declaration::Voice(n) => Some((n.name.clone(), "voice".into(), n.loc.clone())),
Declaration::Cors(n) => Some((n.name.clone(), "cors".into(), n.loc.clone())),
Declaration::Cache(n) => Some((n.name.clone(), "cache".into(), n.loc.clone())),
Declaration::Savant(n) => Some((n.name.clone(), "savant".into(), n.loc.clone())),
Declaration::Synth(n) => Some((n.name.clone(), "synth".into(), n.loc.clone())),
Declaration::Scope(n) => Some((n.name.clone(), "scope".into(), n.loc.clone())),
Declaration::Credential(n) => Some((n.name.clone(), "credential".into(), n.loc.clone())),
Declaration::Observable(n) => Some((n.name.clone(), "observable".into(), n.loc.clone())),
Declaration::Witness(n) => Some((n.name.clone(), "witness".into(), n.loc.clone())),
Declaration::Document(n) => Some((n.name.clone(), "document".into(), n.loc.clone())),
Declaration::Deliver(n) => Some((n.name.clone(), "deliver".into(), n.loc.clone())),
Declaration::Notify(n) => Some((n.name.clone(), "notify".into(), n.loc.clone())),
Declaration::Generic(n) => {
if n.name.is_empty() {
None
} else {
Some((n.name.clone(), n.keyword.clone(), n.loc.clone()))
}
}
}
}
#[derive(Debug, Default)]
pub struct DocumentDefinition {
pub name: String,
pub target: String,
pub template: String,
pub provenance: String,
pub effects: Option<EffectRow>,
pub blocks: Vec<DocBlock>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct DocBlock {
pub kind: String,
pub fields: Vec<(String, DocScalar)>,
pub children: Vec<DocBlock>,
pub loc: Loc,
}
impl DocBlock {
pub fn field(&self, name: &str) -> Option<&DocScalar> {
self.fields.iter().find(|(k, _)| k == name).map(|(_, v)| v)
}
pub fn has_field(&self, name: &str) -> bool {
self.fields.iter().any(|(k, _)| k == name)
}
}
#[derive(Debug, Clone, PartialEq)]
pub enum DocScalar {
Text(String),
Ref(String),
List(Vec<String>),
Int(i64),
Bool(bool),
}
impl DocScalar {
pub fn as_ref_name(&self) -> Option<&str> {
match self {
DocScalar::Ref(s) => Some(s.as_str()),
_ => None,
}
}
pub fn as_text(&self) -> Option<&str> {
match self {
DocScalar::Text(s) => Some(s.as_str()),
_ => None,
}
}
}
#[derive(Debug, Default)]
pub struct DeliverDefinition {
pub name: String,
pub target: String,
pub provenance: String,
pub secret: String,
pub effects: Option<EffectRow>,
pub ops: Vec<DeliverOp>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct NotifyDefinition {
pub name: String,
pub channel: String,
pub to_secret: String,
pub to_is_secret: bool,
pub template: String,
pub window: String,
pub provenance: String,
pub effects: Option<EffectRow>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct DeliverOp {
pub kind: String,
pub fields: Vec<(String, DocScalar)>,
pub loc: Loc,
}
impl DeliverOp {
pub fn field(&self, name: &str) -> Option<&DocScalar> {
self.fields.iter().find(|(k, _)| k == name).map(|(_, v)| v)
}
pub fn has_field(&self, name: &str) -> bool {
self.fields.iter().any(|(k, _)| k == name)
}
pub fn ref_fields(&self) -> impl Iterator<Item = (&str, &str)> {
self.fields.iter().filter_map(|(k, v)| match v {
DocScalar::Ref(name) => Some((k.as_str(), name.as_str())),
_ => None,
})
}
}
#[derive(Debug, Default)]
pub struct ResourceDefinition {
pub name: String,
pub kind: String,
pub endpoint: String,
pub capacity: Option<i64>,
pub lifetime: String,
pub certainty_floor: Option<f64>, pub shield_ref: String, pub within: String,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct FabricDefinition {
pub name: String,
pub provider: String, pub region: String, pub zones: Option<i64>, pub ephemeral: Option<bool>, pub shield_ref: String, pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct ManifestDefinition {
pub name: String,
pub resources: Vec<String>, pub fabric_ref: String, pub region: String,
pub zones: Option<i64>,
pub compliance: Vec<String>, pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct ObserveDefinition {
pub name: String,
pub target: String, pub sources: Vec<String>,
pub quorum: Option<i64>, pub timeout: String, pub on_partition: String, pub certainty_floor: Option<f64>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct ReconcileDefinition {
pub name: String,
pub observe_ref: String,
pub threshold: Option<f64>, pub tolerance: Option<f64>, pub on_drift: String, pub shield_ref: String,
pub mandate_ref: String,
pub max_retries: i64, pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct LeaseDefinition {
pub name: String,
pub resource_ref: String,
pub duration: String, pub acquire: String, pub on_expire: String, pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct EnsembleDefinition {
pub name: String,
pub observations: Vec<String>,
pub quorum: Option<i64>,
pub aggregation: String, pub certainty_mode: String, pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Clone, Default)]
pub struct SessionStep {
pub op: String, pub message_type: String, pub branches: Vec<SessionBranch>,
pub binder: String,
pub resumable: bool,
pub loc: Loc,
}
#[derive(Debug, Clone, Default)]
pub struct SessionBranch {
pub label: String,
pub steps: Vec<SessionStep>,
pub loc: Loc,
}
#[derive(Debug, Default)]
pub struct SessionRole {
pub name: String,
pub steps: Vec<SessionStep>,
pub loc: Loc,
}
#[derive(Debug, Default)]
pub struct SessionDefinition {
pub name: String,
pub roles: Vec<SessionRole>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct SocketDefinition {
pub name: String,
pub protocol: String,
pub backpressure_credit: Option<i64>,
pub reconnect: bool,
pub legal_basis: Option<String>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct UpstreamDefinition {
pub name: String,
pub transport: String,
pub protocol: String,
pub role: String,
pub resolve: String,
pub resource_ref: String,
pub secret: String,
pub auth_kind: String,
pub auth_name: Option<String>,
pub auth_prefix: Option<String>,
pub map: Vec<UpstreamMapRule>,
pub reconnect: Option<UpstreamReconnect>,
pub overflow: Option<String>,
pub backpressure_credit: Option<i64>,
pub preset: Option<String>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct UpstreamMapRule {
pub direction: String,
pub message: String,
pub framing: String,
pub tag: Option<String>,
pub when_field: Option<String>,
pub when_value: Option<String>,
pub loc: Loc,
}
#[derive(Debug, Default)]
pub struct VoiceDefinition {
pub name: String,
pub stt: Option<String>,
pub tts: Option<String>,
pub realtime: Option<String>,
pub carrier: String,
pub interruptible: bool,
pub legal_basis: Option<String>,
pub persona: Option<String>,
pub context: Option<String>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct CorsDefinition {
pub name: String,
pub allow_origins: Vec<String>,
pub allow_methods: Vec<String>,
pub allow_headers: Vec<String>,
pub allow_credentials: bool,
pub max_age: Option<String>,
pub expose_headers: Vec<String>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct CredentialDefinition {
pub name: String,
pub ttl: String,
pub grants: Vec<String>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct CacheDefinition {
pub name: String,
pub backend: String,
pub ttl: Option<String>,
pub key_params: Vec<String>,
pub default_policy: bool,
pub apply_to_effects: Vec<String>,
pub invalidate_on: Vec<String>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct SavantDefinition {
pub name: String,
pub domain: String,
pub cognition: Option<SavantCognition>,
pub memory: Option<SavantMemory>,
pub budget: Option<SavantBudget>,
pub mandates: Vec<SavantMandate>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct SavantCognition {
pub depth: String,
pub entropic_threshold: Option<f64>,
pub divergence: String,
pub loc: Loc,
}
#[derive(Debug, Default)]
pub struct SavantMemory {
pub backend: String,
pub corpus_graph: bool,
pub isolation_level: String,
pub loc: Loc,
}
#[derive(Debug, Default)]
pub struct SavantBudget {
pub max_iterations: Option<i64>,
pub max_tool_synth: Option<i64>,
pub loc: Loc,
}
#[derive(Debug, Default)]
pub struct SavantMandate {
pub name: String,
pub objective: String,
pub output_type: String,
pub loc: Loc,
}
#[derive(Debug, Default)]
pub struct SynthDefinition {
pub name: String,
pub target: String,
pub risk: String,
pub language: String,
pub sandbox: String,
pub review: String,
pub max_lines: Option<i64>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct UpstreamReconnect {
pub backoff_ms: i64,
pub max_attempts: i64,
pub on_exhausted: String,
}
#[derive(Debug, Default)]
pub struct TopologyEdge {
pub source: String,
pub target: String,
pub session_ref: String,
pub loc: Loc,
}
#[derive(Debug, Default)]
pub struct TopologyDefinition {
pub name: String,
pub nodes: Vec<String>,
pub edges: Vec<TopologyEdge>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct ImmuneDefinition {
pub name: String,
pub watch: Vec<String>, pub sensitivity: Option<f64>, pub baseline: String, pub window: i64, pub scope: String, pub tau: String, pub decay: String, pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct ReflexDefinition {
pub name: String,
pub trigger: String, pub on_level: String, pub action: String, pub scope: String, pub sla: String, pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct HealDefinition {
pub name: String,
pub source: String, pub on_level: String, pub mode: String, pub scope: String, pub review_sla: String, pub shield_ref: String, pub max_patches: i64, pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct ComponentDefinition {
pub name: String,
pub renders: String,
pub via_shield: String,
pub on_interact: String,
pub render_hint: String, pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct ViewDefinition {
pub name: String,
pub title: String,
pub components: Vec<String>,
pub route: String,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct GenericDeclaration {
pub keyword: String,
pub name: String,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct AgentDefinition {
pub name: String,
pub goal: String,
pub tools: Vec<String>,
pub memory_ref: String,
pub strategy: String, pub on_stuck: String, pub shield_ref: String,
pub max_iterations: Option<i64>,
pub max_tokens: Option<i64>,
pub max_time: String,
pub max_cost: Option<f64>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Clone)]
pub struct ExtensionMember {
pub name: String,
pub semantics: Option<String>,
pub default_confidence: Option<f64>,
pub loc: Loc,
}
#[derive(Debug)]
pub struct ExtensionDefinition {
pub name: String,
pub category: String,
pub members: Vec<ExtensionMember>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct WindowDefinition {
pub name: String,
pub timezone: String,
pub allow: Vec<WindowSpan>,
pub exclude: Vec<String>,
pub on_outside: String,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct WindowSpan {
pub day_start: String,
pub day_end: String,
pub hour_start: i64,
pub hour_end: i64,
pub loc: Loc,
}
#[derive(Debug)]
pub struct ShieldDefinition {
pub name: String,
pub scan: Vec<String>,
pub strategy: String, pub on_breach: String, pub severity: String, pub quarantine: String,
pub max_retries: Option<i64>,
pub confidence_threshold: Option<f64>,
pub allow_tools: Vec<String>,
pub deny_tools: Vec<String>,
pub sandbox: Option<bool>,
pub redact: Vec<String>,
pub log: String,
pub deflect_message: String,
pub taint: String,
pub compliance: Vec<String>,
pub sign: String,
pub unknown_fields: Vec<(String, Loc)>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct PixDefinition {
pub name: String,
pub source: String,
pub depth: Option<i64>,
pub branching: Option<i64>,
pub model: String,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct LedgerDefinition {
pub name: String,
pub source: String,
pub depth: Option<i64>,
pub branching: Option<i64>,
pub model: String,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct PsycheDefinition {
pub name: String,
pub dimensions: Vec<String>,
pub manifold_noise: Option<f64>,
pub manifold_momentum: Option<f64>,
pub safety_constraints: Vec<String>,
pub quantum_enabled: Option<bool>,
pub inference_mode: String, pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Clone)]
pub struct CorpusRelation {
pub etype: String,
pub from: String,
pub to: String,
pub weight: f64,
pub loc: Loc,
}
#[derive(Debug)]
pub struct CorpusDefinition {
pub name: String,
pub documents: Vec<String>, pub relations: Vec<CorpusRelation>,
pub adaptive: bool,
pub mcp_server: String,
pub mcp_resource_uri: String,
pub store_source: Option<CorpusStoreSource>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Clone)]
pub struct CorpusStoreSource {
pub doc_store: String,
pub doc_id_col: String,
pub doc_title_col: String,
pub edge_store: String,
pub edge_from_col: String,
pub edge_to_col: String,
pub edge_type_col: String,
pub edge_weight_col: String,
pub loc: Loc,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum DataspaceColumnType {
Text,
Int,
Float,
Bool,
Timestamp,
Json,
}
impl DataspaceColumnType {
pub fn all() -> [DataspaceColumnType; 6] {
[
DataspaceColumnType::Text,
DataspaceColumnType::Int,
DataspaceColumnType::Float,
DataspaceColumnType::Bool,
DataspaceColumnType::Timestamp,
DataspaceColumnType::Json,
]
}
pub fn canonical_name(self) -> &'static str {
match self {
DataspaceColumnType::Text => "Text",
DataspaceColumnType::Int => "Int",
DataspaceColumnType::Float => "Float",
DataspaceColumnType::Bool => "Bool",
DataspaceColumnType::Timestamp => "Timestamp",
DataspaceColumnType::Json => "Json",
}
}
pub fn all_canonical_names() -> Vec<&'static str> {
Self::all().iter().map(|t| t.canonical_name()).collect()
}
pub fn from_token(name: &str) -> Option<DataspaceColumnType> {
match name {
"Text" | "text" | "string" | "String" => Some(DataspaceColumnType::Text),
"Int" | "int" | "integer" | "i64" => Some(DataspaceColumnType::Int),
"Float" | "float" | "double" | "f64" => Some(DataspaceColumnType::Float),
"Bool" | "bool" | "boolean" => Some(DataspaceColumnType::Bool),
"Timestamp" | "timestamp" | "datetime" => Some(DataspaceColumnType::Timestamp),
"Json" | "json" => Some(DataspaceColumnType::Json),
_ => None,
}
}
}
#[derive(Debug)]
pub struct DataspaceColumn {
pub name: String,
pub declared_type: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct DataspaceDefinition {
pub name: String,
pub columns: Vec<DataspaceColumn>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct OtsDefinition {
pub name: String,
pub teleology: String,
pub homotopy_search: String, pub loss_function: String,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct MandateDefinition {
pub name: String,
pub constraint: String,
pub kp: Option<f64>,
pub ki: Option<f64>,
pub kd: Option<f64>,
pub tolerance: Option<f64>,
pub max_steps: Option<i64>,
pub drift_bound: Option<f64>,
pub lipschitz: Option<f64>,
pub on_violation: String, pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct ComputeDefinition {
pub name: String,
pub shield_ref: String,
pub parameters: Vec<Parameter>,
pub return_type: String,
pub body: Option<Expr>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct DaemonDefinition {
pub name: String,
pub goal: String,
pub tools: Vec<String>,
pub memory_ref: String,
pub strategy: String, pub on_stuck: String, pub shield_ref: String,
pub window_ref: String,
pub budget: Option<BudgetBlock>,
pub max_tokens: Option<i64>,
pub max_time: String,
pub max_cost: Option<f64>,
pub listeners: Vec<ListenStep>,
pub requires_capabilities: Vec<String>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct BudgetBlock {
pub name: String,
pub quotas: Vec<BudgetQuota>,
pub on_exhausted: String,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct BudgetQuota {
pub kind: String,
pub limit: i64,
pub period: String,
pub effect: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct AxonStoreDefinition {
pub name: String,
pub backend: String, pub connection: String,
pub resource_ref: String,
pub confidence_floor: Option<f64>,
pub isolation: String, pub on_breach: String, pub capability: String,
pub class: String,
pub column_schema: Option<crate::store_schema::StoreColumnSchema>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct AxonEndpointDefinition {
pub name: String,
pub method: String, pub path: String,
pub body_type: String,
pub execute_flow: String,
pub output_type: String,
pub shield_ref: String,
pub cors_ref: String,
pub retries: Option<i64>,
pub timeout: String,
pub compliance: Vec<String>,
pub transport: String,
pub keepalive: String,
pub transport_explicit: bool,
pub implicit_transport: String,
pub requires_capabilities: Vec<String>,
pub public: bool,
pub replay_explicit: bool,
pub replay: bool,
pub transport_dialect: String,
pub has_algebraic_stream_effect: bool,
pub backend: String,
pub path_params: Vec<String>,
pub query_params: Vec<TypeField>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct ImportNode {
pub module_path: Vec<String>,
pub names: Vec<String>,
pub allow_downgrade: bool,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct PersonaDefinition {
pub name: String,
pub domain: Vec<String>,
pub tone: String,
pub confidence_threshold: Option<f64>,
pub cite_sources: Option<bool>,
pub refuse_if: Vec<String>,
pub language: String,
pub description: String,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct ContextDefinition {
pub name: String,
pub memory_scope: String,
pub language: String,
pub depth: String,
pub max_tokens: Option<i64>,
pub temperature: Option<f64>,
pub cite_sources: Option<bool>,
pub now_tz: Option<String>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct AnchorConstraint {
pub name: String,
pub require: String,
pub reject: Vec<String>,
pub enforce: String,
pub description: String,
pub confidence_floor: Option<f64>,
pub unknown_response: String,
pub on_violation: String,
pub on_violation_target: String,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct MemoryDefinition {
pub name: String,
pub store: String,
pub backend: String,
pub retrieval: String,
pub decay: String,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct ToolDefinition {
pub name: String,
pub provider: String,
pub max_results: Option<i64>,
pub filter_expr: String,
pub timeout: String,
pub runtime: String,
pub resource_ref: String,
pub sandbox: Option<bool>,
pub effects: Option<EffectRow>,
pub parameters: Vec<Parameter>,
pub output_type: Option<String>,
pub requires: Vec<String>,
pub secret: String,
pub secret_partition: String,
pub target: Option<String>,
pub risk: Option<String>,
pub argv: Vec<String>,
pub cache: String,
pub scrape: Option<ScrapeSpec>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct ScrapeSpec {
pub engine: Option<String>,
pub impersonate: Option<String>,
pub render_wait: Option<String>,
pub proxy: String,
pub respect_robots: Option<bool>,
pub extract: Vec<String>,
pub adaptive: Option<bool>,
pub similarity_floor: Option<f64>,
pub follow: String,
pub max_depth: Option<i64>,
pub max_pages: Option<i64>,
pub concurrency: Option<i64>,
pub politeness: String,
pub checkpoint: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct EffectRow {
pub effects: Vec<String>,
pub epistemic_level: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct TypeDefinition {
pub name: String,
pub fields: Vec<TypeField>,
pub range_constraint: Option<RangeConstraint>,
pub where_clause: Option<WhereClause>,
pub compliance: Vec<String>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Clone)]
pub struct TypeExpr {
pub name: String,
pub generic_param: String,
pub optional: bool,
pub loc: Loc,
}
#[derive(Debug)]
pub struct TypeField {
pub name: String,
pub type_expr: TypeExpr,
pub loc: Loc,
}
#[derive(Debug)]
pub struct RangeConstraint {
pub min_value: f64,
pub max_value: f64,
pub loc: Loc,
}
#[derive(Debug)]
pub struct WhereClause {
pub expression: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct FlowDefinition {
pub name: String,
pub parameters: Vec<Parameter>,
pub return_type: Option<TypeExpr>,
pub body: Vec<FlowStep>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct Parameter {
pub name: String,
pub type_expr: TypeExpr,
pub loc: Loc,
}
#[derive(Debug)]
pub enum FlowStep {
Step(StepNode),
If(ConditionalNode),
ForIn(ForInStatement),
Let(LetStatement),
Return(ReturnStatement),
Break(BreakStatement),
Continue(ContinueStatement),
LambdaDataApply(LambdaDataApplyNode),
Probe(ProbeStep),
Reason(ReasonStep),
Validate(ValidateStep),
Refine(RefineStep),
Weave(WeaveStep),
UseTool(UseToolStep),
Remember(RememberStep),
Recall(RecallStep),
Par(ParBlock),
Hibernate(HibernateStep),
Deliberate(DeliberateBlock),
Consensus(ConsensusBlock),
Forge(ForgeBlock),
Focus(FocusStep),
Grad(GradStep),
Associate(AssociateStep),
Aggregate(AggregateStep),
ExploreStep(ExploreStepNode),
Ingest(IngestStep),
ShieldApply(ShieldApplyStep),
Stream(StreamBlock),
Handle(HandleBlock),
Perform(PerformStep),
Resume(ResumeStep),
Abort(AbortStep),
Forward(ForwardStep),
Navigate(NavigateStep),
Drill(DrillStep),
Trail(TrailStep),
Corroborate(CorroborateStep),
OtsApply(OtsApplyStep),
MandateApply(MandateApplyStep),
ComputeApply(ComputeApplyStep),
AgentCall(AgentCallStep),
Listen(ListenStep),
DaemonStep(DaemonStepNode),
Emit(EmitStatement),
Mint(MintStep),
Rotate(RotateStep),
Publish(PublishStatement),
Discover(DiscoverStatement),
Persist(PersistStep),
Retrieve(RetrieveStep),
Mutate(MutateStep),
Purge(PurgeStep),
Transact(TransactBlock),
Warden(WardenBlock),
Quant(QuantBlock),
Yield(YieldStatement),
Run(RunStatement),
GenericStep(GenericFlowStep),
}
#[derive(Debug)]
pub struct GenericFlowStep {
pub keyword: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct StepGuardNode {
pub kind: String,
pub name: String,
pub target: String,
pub binding: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct StepNode {
pub name: String,
pub persona_ref: String,
pub given: String,
pub ask: String,
pub output_type: String,
pub confidence_floor: Option<f64>,
pub navigate_ref: String,
pub apply_ref: String,
pub requires_context: Option<u32>,
pub now_tz: Option<String>,
pub guards: Vec<StepGuardNode>,
pub pix_ops: Vec<FlowStep>,
pub stream: Option<Box<StreamBlock>>,
pub performs: Vec<PerformStep>,
pub loc: Loc,
}
#[derive(Debug)]
pub struct IntentNode {
pub name: String,
pub given: String,
pub ask: String,
pub output_type: Option<TypeExpr>,
pub confidence_floor: Option<f64>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct RunStatement {
pub flow_name: String,
pub arguments: Vec<String>,
pub persona: String,
pub context: String,
pub anchors: Vec<String>,
pub on_failure: String,
pub on_failure_params: Vec<(String, String)>,
pub output_to: String,
pub effort: String,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct EpistemicBlock {
pub mode: String,
pub body: Vec<Declaration>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Clone)]
pub enum Expr {
Lit(ExprLit),
Ref(String),
Unary(UnOp, Box<Expr>),
Binary(BinOp, Box<Expr>, Box<Expr>),
Call(Builtin, Vec<Expr>),
Field(Box<Expr>, String),
Index(Box<Expr>, Box<Expr>),
Let {
name: String,
value: Box<Expr>,
body: Box<Expr>,
},
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Builtin {
Length,
Count,
IsEmpty,
IsNull,
Contains,
StartsWith,
EndsWith,
AsInt,
AsFloat,
AsString,
AsBool,
}
impl Builtin {
pub fn extra_arity(self) -> usize {
match self {
Builtin::Length
| Builtin::Count
| Builtin::IsEmpty
| Builtin::IsNull
| Builtin::AsInt
| Builtin::AsFloat
| Builtin::AsString
| Builtin::AsBool => 0,
Builtin::Contains | Builtin::StartsWith | Builtin::EndsWith => 1,
}
}
pub fn surface(self) -> &'static str {
match self {
Builtin::Length => "length",
Builtin::Count => "count",
Builtin::IsEmpty => "is_empty",
Builtin::IsNull => "is_null",
Builtin::Contains => "contains",
Builtin::StartsWith => "starts_with",
Builtin::EndsWith => "ends_with",
Builtin::AsInt => "as_int",
Builtin::AsFloat => "as_float",
Builtin::AsString => "as_string",
Builtin::AsBool => "as_bool",
}
}
pub fn from_name(name: &str) -> Option<Builtin> {
Some(match name {
"length" => Builtin::Length,
"count" => Builtin::Count,
"is_empty" => Builtin::IsEmpty,
"is_null" => Builtin::IsNull,
"contains" => Builtin::Contains,
"starts_with" => Builtin::StartsWith,
"ends_with" => Builtin::EndsWith,
"as_int" => Builtin::AsInt,
"as_float" => Builtin::AsFloat,
"as_string" => Builtin::AsString,
"as_bool" => Builtin::AsBool,
_ => return None,
})
}
}
#[derive(Debug, Clone)]
pub enum ExprLit {
Int(i64),
Float(f64),
Bool(bool),
Str(String),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum UnOp {
Neg,
Not,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum BinOp {
Add,
Sub,
Mul,
Div,
Mod,
Eq,
Ne,
Lt,
Le,
Gt,
Ge,
And,
Or,
}
#[derive(Debug)]
pub struct ConditionalNode {
pub condition: String,
pub comparison_op: String,
pub comparison_value: String,
pub then_body: Vec<FlowStep>,
pub else_body: Vec<FlowStep>,
pub conditions: Vec<(String, String, String)>,
pub conjunctor: String,
pub cond: Option<Expr>,
pub loc: Loc,
}
#[derive(Debug)]
pub struct ForInStatement {
pub variable: String,
pub iterable: String,
pub body: Vec<FlowStep>,
pub loc: Loc,
}
#[derive(Debug)]
pub struct LetStatement {
pub identifier: String,
pub value_expr: String,
pub value_kind: String,
pub type_annotation: Option<TypeExpr>,
pub value_ast: Option<Expr>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct ReturnStatement {
pub value_expr: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct YieldStatement {
pub value_expr: String,
pub value_kind: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct BreakStatement {
pub loc: Loc,
}
#[derive(Debug)]
pub struct ContinueStatement {
pub loc: Loc,
}
#[derive(Debug)]
pub struct LambdaDataDefinition {
pub name: String,
pub ontology: String, pub certainty: f64, pub temporal_frame_start: String, pub temporal_frame_end: String, pub provenance: String, pub derivation: String, pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct LambdaDataApplyNode {
pub lambda_data_name: String, pub target: String, pub output_type: String, pub loc: Loc,
}
#[derive(Debug)]
pub struct ProbeStep {
pub target: String,
pub fields: Vec<String>,
pub loc: Loc,
}
#[derive(Debug)]
pub struct ReasonStep {
pub strategy: String,
pub target: String,
pub given: String,
pub ask: String,
pub depth: Option<u32>,
pub loc: Loc,
}
#[derive(Debug)]
pub struct ValidateStep {
pub target: String,
pub rule: String,
pub guard: Option<ConfidenceGuard>,
pub loc: Loc,
}
#[derive(Debug)]
pub struct ConfidenceGuard {
pub threshold: f64,
pub max_attempts: u32,
pub loc: Loc,
}
#[derive(Debug)]
pub struct RefineStep {
pub target: String,
pub strategy: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct WeaveStep {
pub sources: Vec<String>,
pub target: String,
pub format_type: String,
pub priority: Vec<String>,
pub style: String,
pub include: Vec<String>,
pub loc: Loc,
}
#[derive(Debug, Clone, PartialEq)]
pub enum UseArgs {
LegacyPositional(String),
Named(Vec<(String, String, String)>),
}
impl UseArgs {
pub fn legacy_argument(&self) -> String {
match self {
UseArgs::LegacyPositional(s) => s.clone(),
UseArgs::Named(_) => String::new(),
}
}
}
#[derive(Debug)]
pub struct UseToolStep {
pub tool_name: String,
pub args: UseArgs,
pub loc: Loc,
}
#[derive(Debug)]
pub struct RememberStep {
pub expression: String,
pub memory_target: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct RecallStep {
pub query: String,
pub memory_source: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct ParBlock {
pub branches: Vec<Vec<FlowStep>>,
pub loc: Loc,
}
#[derive(Debug)]
pub struct HibernateStep {
pub event_name: String,
pub timeout: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct DeliberateBlock {
pub loc: Loc,
}
#[derive(Debug)]
pub struct ConsensusBlock {
pub loc: Loc,
}
#[derive(Debug, Default)]
pub struct ForgeBlock {
pub name: String,
pub seed: String,
pub output_type: String,
pub mode: String,
pub novelty: f64,
pub depth: i64,
pub branches: i64,
pub constraints_ref: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct FocusStep {
pub expression: String,
pub where_expr: String,
pub select: Vec<String>,
pub output: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct GradStep {
pub target: String,
pub wrt: Vec<String>,
pub output: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct AssociateStep {
pub left: String,
pub right: String,
pub using_field: String,
pub output: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct AggregateStep {
pub target: String,
pub group_by: Vec<String>,
pub alias: String,
pub compute: Vec<String>,
pub where_expr: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct ExploreStepNode {
pub target: String,
pub limit: Option<i64>,
pub output: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct IngestStep {
pub source: String,
pub target: String,
pub format: String,
pub max_bytes: Option<u64>,
pub max_rows: Option<u64>,
pub loc: Loc,
}
#[derive(Debug)]
pub struct ShieldApplyStep {
pub shield_name: String,
pub target: String,
pub output_type: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct StreamBlock {
pub chunk_type: String,
pub on_chunk: Option<StepNode>,
pub on_complete: Option<StepNode>,
pub on_error: Option<StepNode>,
pub body: Vec<FlowStep>,
pub loc: Loc,
}
#[derive(Debug)]
pub struct EffectDefinition {
pub name: String,
pub operations: Vec<EffectOperation>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct EffectOperation {
pub name: String,
pub parameters: Vec<Parameter>,
pub return_type: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct HandleBlock {
pub effect_names: Vec<String>,
pub clauses: Vec<HandlerClause>,
pub body: Vec<FlowStep>,
pub loc: Loc,
}
#[derive(Debug)]
pub struct HandlerClause {
pub operation_name: String,
pub parameter_names: Vec<String>,
pub body: Vec<FlowStep>,
pub loc: Loc,
}
#[derive(Debug)]
pub struct PerformStep {
pub effect_name: Option<String>,
pub operation_name: String,
pub arguments: Vec<String>,
pub loc: Loc,
}
#[derive(Debug)]
pub struct ResumeStep {
pub value_expr: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct AbortStep {
pub value_expr: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct ForwardStep {
pub effect_name: Option<String>,
pub operation_name: String,
pub arguments: Vec<String>,
pub loc: Loc,
}
#[derive(Debug)]
pub struct NavigateStep {
pub depth: Option<i64>,
pub pix_name: String,
pub corpus_name: String,
pub query_expr: String,
pub trail_enabled: bool,
pub output_name: String,
pub seed: String,
pub budget: Option<i64>,
pub where_expr: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct DrillStep {
pub pix_name: String,
pub subtree_path: String,
pub query_expr: String,
pub output_name: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct TrailStep {
pub navigate_ref: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct CorroborateStep {
pub navigate_ref: String,
pub output_name: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct OtsApplyStep {
pub ots_name: String,
pub target: String,
pub output_type: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct MandateApplyStep {
pub mandate_name: String,
pub target: String,
pub output_type: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct AgentCallStep {
pub agent_name: String,
pub arguments: Vec<String>,
pub loc: Loc,
}
#[derive(Debug)]
pub struct ComputeApplyStep {
pub compute_name: String,
pub arguments: Vec<String>,
pub output_name: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct ListenStep {
pub channel: String,
pub channel_is_ref: bool,
pub event_alias: String,
pub body: Vec<FlowStep>,
pub loc: Loc,
}
#[derive(Debug)]
pub struct DaemonStepNode {
pub daemon_ref: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct PersistStep {
pub store_name: String,
pub fields: Vec<(String, String)>,
pub loc: Loc,
}
#[derive(Debug)]
pub struct RetrieveStep {
pub store_name: String,
pub where_expr: String,
pub alias: String,
pub order_by: String,
pub limit_expr: String,
pub aggregate: String,
pub group_by: String,
pub cache: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct MutateStep {
pub store_name: String,
pub where_expr: String,
pub fields: Vec<(String, String)>,
pub loc: Loc,
}
#[derive(Debug)]
pub struct PurgeStep {
pub store_name: String,
pub where_expr: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct TransactBlock {
pub loc: Loc,
}
#[derive(Debug, Default)]
pub struct ScopeDefinition {
pub name: String,
pub targets: Vec<String>,
pub depth: String,
pub approver: String,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug, Default)]
pub struct WardenBlock {
pub target: String,
pub scope_ref: String,
pub body: Vec<FlowStep>,
pub loc: Loc,
}
#[derive(Debug, Default)]
pub struct QuantBlock {
pub encoding: Option<String>,
pub observable: Option<String>,
pub qubits: Option<i64>,
pub depth: Option<i64>,
pub bandwidth: Option<f64>,
pub reupload: Option<i64>,
pub effect: String,
pub body: Vec<FlowStep>,
pub loc: Loc,
}
#[derive(Debug, Default, Clone)]
pub struct PauliTerm {
pub coefficient: f64,
pub pauli: String,
pub loc: Loc,
}
#[derive(Debug, Default)]
pub struct ObservableDefinition {
pub name: String,
pub qubits: Option<i64>,
pub terms: Vec<PauliTerm>,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct WitnessDefinition {
pub name: String,
pub claim: String,
pub baseline: String,
pub metric: String,
pub threshold: f64,
pub data: String,
pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct ChannelDefinition {
pub name: String,
pub message: String, pub qos: String, pub lifetime: String, pub persistence: String, pub shield_ref: String, pub loc: Loc,
pub leading_trivia: Vec<crate::tokens::Trivia>,
pub trailing_trivia: Vec<crate::tokens::Trivia>,
}
#[derive(Debug)]
pub struct EmitStatement {
pub channel_ref: String,
pub value_ref: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct MintStep {
pub credential_ref: String,
pub binding: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct RotateStep {
pub store_ref: String,
pub where_expr: String,
pub tool_ref: String,
pub binding: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct PublishStatement {
pub channel_ref: String,
pub shield_ref: String,
pub loc: Loc,
}
#[derive(Debug)]
pub struct DiscoverStatement {
pub capability_ref: String,
pub alias: String,
pub loc: Loc,
}