///|
fn main {
  println("MoonBTKit fixture report")
  let summaries = @moonbtkit.run_fixture_catalog()
  let mut i = 0
  while i < summaries.length() {
    println(summaries[i].to_line())
    i = i + 1
  }

  println("")
  println("MoonBTKit recipe report")
  let recipes = @moonbtkit.run_recipe_catalog()
  let mut r = 0
  while r < recipes.length() {
    println(recipes[r].to_line())
    r = r + 1
  }

  match @moonbtkit.load_fixture("agent_tool") {
    Ok(doc) => {
      let engine = @moonbtkit.new_engine(doc.tree, blackboard=doc.blackboard)
      match engine.run_until_done(max_ticks=8) {
        Ok(result) => {
          println("")
          println("agent_tool summary: " + result.summary())
          println("digest: " + engine.trace_digest())
          println(@moonbtkit.summarize_trace(engine.trace).to_line())
          println(
            @moonbtkit.coverage_from_trace(doc.tree, engine.trace).summary(),
          )
          println(
            @moonbtkit.profile_trace("agent_tool", engine.trace).summary(),
          )
          let bundle = @moonbtkit.visualization_bundle(doc.tree, engine.trace)
          println("visualization assets: " + bundle.length().to_string())
        }
        Err(err) => println("run error: " + err.message())
      }
    }
    Err(err) => println("fixture error: " + err.message())
  }

  println("")
  println(@moonbtkit.fixture_matrix_report().summary())
  println(@moonbtkit.audit_fixture_catalog().summary())
}