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_decoder() -> decode.Decoder(types.Task)
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