bijux-dag-runtime 0.4.0

Execution engine, replay semantics, and runtime policy layer for Bijux DAG graphs.
Documentation
use crate::infrastructure::{BackendExecutionCompletion, BackendExecutionRequest, ExecutorBackend};
use crate::{NodeResult, RuntimeError};
use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::collections::BTreeMap;

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct AdapterCapabilities {
    pub supports_async: bool,
    pub supports_streaming_logs: bool,
    pub supported_backends: Vec<ExecutorBackend>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AdapterContext {
    pub run_id: String,
    pub node_id: String,
    pub params: Value,
    pub env: BTreeMap<String, String>,
}

pub trait AdapterPlugin: Send + Sync {
    fn adapter_name(&self) -> &str;
    fn adapter_version(&self) -> &str;
    fn capabilities(&self) -> AdapterCapabilities;
    fn execute(&self, context: &AdapterContext) -> Result<NodeResult, RuntimeError>;
}

pub trait BackendPlugin: Send + Sync {
    fn backend_kind(&self) -> ExecutorBackend;
    fn submit(&self, request: &BackendExecutionRequest) -> Result<(), String>;
    fn poll(
        &self,
        run_id: &str,
        node_id: &str,
    ) -> Result<Option<BackendExecutionCompletion>, String>;
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct PluginManifest {
    pub plugin_name: String,
    pub plugin_version: String,
    pub plugin_type: String,
    pub contract_version: String,
}