bijux-dag-app 0.4.1

Application orchestration and response-shaping layer for Bijux DAG command surfaces.
Documentation
use crate::routes::selector_grammar::SelectorExpression;
use crate::run_failure_summary::explain_failure;
use crate::run_views::{
    doctor_run, explain_run_id, inspect_summary, resolve_run_dir, run_scheduler_checkpoint,
    run_timeline, run_timeline_with_query, run_tree, runs_history, runs_history_query_with_filters,
    write_run_history_index, RunTimelineQuery,
};
use serde_json::Value;
use std::path::Path;
use std::process::ExitCode;

pub(crate) fn run_summary_for_id(root: &Path, run_id: &str) -> Result<Value, ExitCode> {
    let run_dir = resolve_run_dir(root, run_id);
    inspect_summary(&run_dir).map_err(|_| ExitCode::from(3))
}

pub(crate) fn run_tree_for_id(root: &Path, run_id: &str) -> Result<Value, ExitCode> {
    let run_dir = resolve_run_dir(root, run_id);
    run_tree(&run_dir).map_err(|_| ExitCode::from(3))
}

pub(crate) fn run_timeline_for_id(root: &Path, run_id: &str) -> Result<Value, ExitCode> {
    let run_dir = resolve_run_dir(root, run_id);
    run_timeline(&run_dir).map_err(|_| ExitCode::from(3))
}

pub(crate) fn run_timeline_for_id_with_query(
    root: &Path,
    run_id: &str,
    query: &RunTimelineQuery,
) -> Result<Value, ExitCode> {
    let run_dir = resolve_run_dir(root, run_id);
    run_timeline_with_query(&run_dir, query).map_err(|_| ExitCode::from(3))
}

pub(crate) fn doctor_for_run_id(root: &Path, run_id: &str) -> Value {
    let run_dir = resolve_run_dir(root, run_id);
    doctor_run(&run_dir)
}

pub(crate) fn explain_failure_for_run_id(root: &Path, run_id: &str) -> Result<Value, ExitCode> {
    let run_dir = resolve_run_dir(root, run_id);
    explain_failure(&run_dir).map_err(|_| ExitCode::from(3))
}

pub(crate) fn scheduler_checkpoint_for_run_id(
    root: &Path,
    run_id: &str,
) -> Result<Value, ExitCode> {
    let run_dir = resolve_run_dir(root, run_id);
    run_scheduler_checkpoint(&run_dir).map_err(|_| ExitCode::from(3))
}

pub(crate) fn run_history_for_root(root: &Path) -> Result<Value, ExitCode> {
    runs_history(root).map_err(|_| ExitCode::from(3))
}

pub(crate) fn run_history_query_for_root(
    root: &Path,
    status_filter: Option<&str>,
    source_filter: Option<&str>,
    graph_filter: Option<&str>,
    pagination: Option<(usize, usize)>,
    selectors: Option<&[SelectorExpression]>,
) -> Result<Value, ExitCode> {
    runs_history_query_with_filters(
        root,
        status_filter,
        source_filter,
        graph_filter,
        pagination,
        selectors,
    )
    .map_err(|_| ExitCode::from(3))
}

pub(crate) fn rebuild_run_history_index_for_root(
    root: &Path,
) -> Result<std::path::PathBuf, ExitCode> {
    write_run_history_index(root).map_err(|_| ExitCode::from(3))
}

pub(crate) fn run_id_explain_for_root(root: &Path, run_id: &str) -> Result<Value, ExitCode> {
    explain_run_id(root, run_id).map_err(|_| ExitCode::from(3))
}