Skip to main content

Crate aaai_core

Crate aaai_core 

Source
Expand description

§aaai-core

Core engine for aaai (audit for asset integrity).

This crate provides all domain logic: folder diffing, audit evaluation, report generation, secret masking, audit history, profiles, and project config. It is consumed by [aaai-cli] (the CLI binary) and [aaai-gui] (the desktop GUI).

§Module map

aaai-core
  ├── config      — AuditDefinition YAML, entry fields, lockfile, I/O
  ├── diff        — parallel folder diff (rayon), DiffEntry, IgnoreRules (.aaaiignore)
  ├── audit       — AuditEngine, AuditResult, AuditStatus, AuditWarning
  ├── report      — Markdown / JSON / HTML / SARIF v2.1.0 output
  ├── masking     — regex-based secret redaction (9 built-in patterns)
  ├── history     — append-only audit run log (~/.aaai/history.jsonl)
  ├── profile     — named before/after/definition combos + user prefs (theme)
  ├── project     — .aaai.yaml auto-discovery and project-level defaults
  └── templates   — 8 built-in rule templates (version_bump, port_change, …)

§Quick start

use aaai_core::{DiffEngine, AuditEngine, AuditDefinition};
use std::path::Path;

let diffs = DiffEngine::compare(Path::new("./before"), Path::new("./after")).unwrap();
let definition = AuditDefinition::new_empty();
let result = AuditEngine::evaluate(&diffs, &definition);
println!("PASSED: {}", result.summary.is_passing());

§Exit code contract (used by aaai-cli)

CodeMeaning
0PASSED — all entries OK or Ignored
1FAILED — one or more audit failures
2PENDING — unresolved entries
3ERROR — file-level errors
4CONFIG_ERROR — definition parse error

Re-exports§

pub use audit::engine::AuditEngine;
pub use audit::engine::AuditOptions;
pub use audit::result::AuditResult;
pub use audit::result::AuditStatus;
pub use audit::result::AuditSummary;
pub use audit::result::FileAuditResult;
pub use config::definition::AuditDefinition;
pub use config::definition::AuditEntry;
pub use config::definition::AuditStrategy;
pub use diff::engine::DiffEngine;
pub use diff::entry::DiffEntry;
pub use diff::entry::DiffStats;
pub use diff::entry::DiffType;
pub use diff::entry::LARGE_FILE_THRESHOLD;
pub use diff::ignore::IgnoreRules;
pub use diff::progress::DiffProgress;
pub use diff::progress::ProgressSink;
pub use diff::progress::ChannelProgress;
pub use diff::progress::NullProgress;
pub use masking::engine::MaskingEngine;
pub use report::generator::ReportGenerator;

Modules§

audit
config
diff
history
masking
profile
project
report
templates