use anyhow::Result;
use clap::{Args, ValueEnum};
use globset::{Glob, GlobSet, GlobSetBuilder};
use std::collections::HashMap;
use std::path::{Path, PathBuf};
use std::time::Duration;
use crate::cli::daemon::{
daemon_result, daemon_v2, mati_root_for, mati_root_for_ident, DaemonResult,
};
use mati_core::hooks::decide::{self, Decision, EnforcementInput, HookEvent};
mod config;
mod entry;
mod events_output;
mod flows;
mod path;
mod policy;
#[cfg(test)]
mod tests;
pub use entry::*;
pub(super) use super::{daemon, sandbox};
pub(super) use config::run_config_change;
pub(super) use events_output::{
apply_consult_mandate, check_eval_data, consult_globset, consulted_flag, daemon_data,
emit_allow, escape_json_string, fire_events, format_decision, log_fail_open,
log_fail_open_named, process_eval_response, AdapterResult, EvalDataCheck,
};
pub(super) use flows::{
ensure_daemon, run_apply_patch, run_post_bash, run_post_bash_introspection, run_post_memget,
run_post_task,
};
pub(super) use path::{
canonical_rel_path, discover_repo_root, discover_repo_root_for, extract_path,
file_exists_for_deleted_signal,
};
pub(super) use policy::{
evaluate_governed_policy, merge_policy_result, policy_block_exempt, policy_verdicts_for_action,
run_fileless_policy, PolicyEvaluationOptions,
};
#[cfg(test)]
pub(super) use events_output::{
allow_output, consult_globset_from, decision_basis_hash, log_fail_open_at, platform_events,
session_command,
};
#[cfg(test)]
pub(super) use flows::{accepts_db_introspection, post_bash_succeeded, receipt_actor};
#[cfg(test)]
pub(super) use policy::policy_core_verdicts;