bankai/cli/parser

CLI argument parsing helpers and response envelopes.

Types

pub type CreateArgs {
  CreateArgs(
    title: String,
    description: String,
    labels: List(String),
    priority: option.Option(String),
    parent: option.Option(String),
    kind: option.Option(String),
  )
}

Constructors

pub type UpdateArgs {
  UpdateArgs(
    id: String,
    status: option.Option(String),
    claim: option.Option(String),
    force: Bool,
    ttl: option.Option(String),
    heartbeat: Bool,
    labels: List(String),
    remove_labels: List(String),
    priority: option.Option(String),
    fence: option.Option(String),
    release: Bool,
    reopen: Bool,
    undefer: Bool,
    defer_until: option.Option(String),
    satisfy_gate: Bool,
    close: option.Option(String),
  )
}

Constructors

Values

pub fn envelope(result: Result(json.Json, String)) -> String
pub fn parse_create_args(
  args: List(String),
) -> Result(CreateArgs, String)

create <title> [flags] or create --title <title> [flags]. Whitelisted flags: –description –label –priority –parent –kind –due –satisfied –expires-at –ttl –actor –reason (gate/wisp).

pub fn parse_days(args: List(String)) -> Int
pub fn parse_description(args: List(String)) -> String

–description D: the single argv token after the flag (“” when absent).

pub fn parse_export_format(args: List(String)) -> String
pub fn parse_from(args: List(String)) -> option.Option(String)
pub fn parse_kind(args: List(String)) -> types.TaskKind
pub fn parse_label_filter(
  args: List(String),
) -> option.Option(String)
pub fn parse_labels(args: List(String)) -> List(String)
pub fn parse_parent(args: List(String)) -> option.Option(String)
pub fn parse_port(args: List(String), default: Int) -> Int
pub fn parse_priority(args: List(String)) -> Int
pub fn parse_relation_type(
  args: List(String),
) -> types.RelationType
pub fn parse_threshold(
  args: List(String),
  default: Float,
) -> Float
pub fn parse_update_args(
  args: List(String),
) -> Result(UpdateArgs, String)

update <id> [status] [--claim [a]] [--label l]... [--priority n] ... Every recognized flag composes in one call; anything else errors loudly.

pub fn validate_priority(priority: Int) -> Result(Int, String)

Validation bounds shared by every create/update path (daemon + embedded). Beads priorities run 0..4; bankai accepts 0..5 so existing 1-5 usage keeps working, but anything outside that is rejected loudly instead of silently skewing the ready sort (round-3 audit: priority 99 / -1 landed in store).

pub fn validate_title(title: String) -> Result(String, String)

Titles are identity in listings and search; an empty title is a garbage ledger entry (round-3 audit: bankai create "" succeeded).

✨ Search Document