bankai/serde

Task <-> JSON serialization for the JSONL persistence + sync layer.

Encode with gleam/json; decode with gleam/dynamic/decode combinators run against the Dynamic from json.parse. content_hash round-trips as hex.

Legacy records (v2 canonical) lack kind and parent_id. Decoding falls back to Task kind and None parent respectively — no destructive migration.

Values

pub fn kind_from_string(s: String) -> types.TaskKind
pub fn kind_to_string(k: types.TaskKind) -> String
pub fn relation_from_string(
  s: String,
) -> Result(types.RelationType, Nil)
pub fn status_from_string(
  s: String,
) -> Result(types.TaskStatus, Nil)
pub fn status_to_string(s: types.TaskStatus) -> String
pub fn task_from_json_string(
  s: String,
) -> Result(types.Task, String)
pub fn task_to_json(task: types.Task) -> json.Json
pub fn task_to_json_string(task: types.Task) -> String
Search Document