bankai/aarondb_bridge

aarondb_bridge — loads bankai’s content-addressed task state into an aarondb Datalog Db and runs queries over it.

Two load modes:

Values

pub fn count_by_status(
  db: process.Subject(transactor.Message),
) -> dict.Dict(String, Int)

Count tasks by status. Requires a db_from_tasks Db.

pub fn cycle_times(
  db: process.Subject(transactor.Message),
) -> List(Int)

Cycle times (updated_at - created_at) for completed/closed tasks. Requires a db_from_tasks Db.

pub fn db_from_tasks(
  tasks: List(types.Task),
) -> Result(process.Subject(transactor.Message), String)

A fresh in-memory aarondb Db with the given bankai tasks loaded as EAV facts.

pub fn db_from_versions(
  versions: List(types.Task),
) -> Result(process.Subject(transactor.Message), String)

Load ALL task versions as per-version EAV entities (entity = content_hash). Each version carries task_id + updated_at, so temporal queries run across the full version graph (store.list() is the feed).

pub fn get_task_attr(
  db: process.Subject(transactor.Message),
  task_id: String,
  attr: String,
) -> Result(fact.Value, Nil)

Look up a single attribute of a task by id.

pub fn history_timeline(
  db: process.Subject(transactor.Message),
  task_id: String,
) -> List(#(Int, String))

Status timeline for a task: List(#(updated_at, status)), ascending by time. Requires a db_from_versions Db.

pub fn load_tasks(
  db: process.Subject(transactor.Message),
  tasks: List(types.Task),
) -> Result(Nil, String)

Transact bankai tasks into an aarondb Db. Idempotent: entities are addressed by task id, so re-transacting the same task is a no-op.

pub fn load_versions(
  db: process.Subject(transactor.Message),
  versions: List(types.Task),
) -> Result(Nil, String)
pub fn search(
  docs: List(#(String, String, String)),
  query: String,
) -> List(#(String, String, Float))

Full-text search over documents via aarondb’s BM25 index. docs are (kind, id, text) triples; returns (kind, id, score) ranked desc, score > 0.

Search Document