Skip to content
Registry

kanban

v0.1.17

File-backed kanban board — tickets, threaded comments, agent assignment, the kanban:change and kanban:comment trigger types, and an injectable console board with agent profiles for planning and review.

license: Apache-2.0Used in 1 kitagentsboardconsole-uikanbantickets

Install

bash
iii trigger compose::add worker=kanban@0.1.17

Run in your project with the iii engine running. Exact versions are immutable and digest-pinned.

Functions15

kanban::activity::list

Function

Read a ticket's activity timeline: field changes, lane moves, deletion and comment events, oldest first.

Request
  • limitinteger· uint64min 0
  • sincestring
  • ticket_idstringrequired

    Ticket uuid or human-readable key (KAN-1, case-insensitive).

  • typesstring[]
Response
  • activityobject[]required
    • actorstringrequired
    • atstringrequired
    • changesobject[]
      • fieldstringrequired
      • fromunknownrequired
      • tounknownrequired
    • comment_idstring
    • idstringrequired
    • seqinteger· uint64requiredmin 0
    • ticket_idstringrequired
    • typestringrequired

      ticket.created | ticket.updated | ticket.moved | ticket.deleted | ticket.restored | comment.created

  • countinteger· uint64requiredmin 0

kanban::agent::list

Function

List assignable agent profiles, resolved through iii-directory with a fallback to the configured agents folder.

Request
Empty object
Response
  • agentsobject[]required
    • colorstring
    • descriptionstring
    • iconstring
    • idstringrequired

      Agent profile id used as the ticket assignee.

    • logostring
    • modelstring
    • namestringrequired
  • errorstring
  • sourcestringrequired

    directory | agents-folder | unavailable

kanban::board::get

Function

Read the board: every configured column with its tickets, plus the resolved paths and priorities. Narrow it with statuses, updated_since and limit, and ask for compact rows to keep the response small.

Request
  • compactboolean

    Return the compact row (key, title, status, priority, assignee, comment_count) instead of the full summary.

  • include_deletedboolean

    Include soft-deleted tickets. Default false.

  • limitinteger· uint64min 0

    At most this many tickets per column, from the top of the column.

  • statusesstring[]

    Only these column ids (board order kept). Omit for every column.

  • updated_sincestring

    Only tickets updated after this ISO timestamp — what changed since your last read.

Response
  • board_filestringrequired
  • columnsobject[]required

    The columns asked for (all by default), each with the tickets the filters kept.

    • idstringrequired
    • labelstringrequired
    • ticketsany of[]required
      any of (2)
      Variant 1
      • assigneestring
      • comment_countinteger· uint64requiredmin 0
      • created_atstringrequired
      • deleted_atstring
      • idstringrequired
      • keystringrequired
      • labelsstring[]required
      • orderinteger· uint64requiredmin 0
      • prioritystringrequired
      • statusstringrequired
      • titlestringrequired
      • updated_atstringrequired
      Variant 2
      • assigneestring
      • comment_countinteger· uint64requiredmin 0
      • keystringrequired
      • prioritystringrequired
      • statusstringrequired
      • titlestringrequired
  • data_path_resolvedstringrequired
  • default_statusstringrequired
  • deleted_countinteger· uint64requiredmin 0
  • id_prefixstringrequired
  • prioritiesstring[]required
  • ticket_countinteger· uint64requiredmin 0

    Every live ticket on the board, regardless of the filters above.

  • updated_atstringrequired

kanban::comment::create

Function

Comment on a ticket, or reply to a comment by passing parent_id. Returns the new comment and the ticket.

Request
  • authorstring

    Agent profile id, or `user`. Defaults to `user`.

  • bodystringrequired

    Comment body. Markdown is rendered in the console.

  • parent_idstring

    Comment id to reply to; replies stay one level deep.

  • ticket_idstringrequired

    Ticket uuid or human-readable key (KAN-1, case-insensitive).

Response
  • commentobjectrequired
    • authorstringrequired

      Agent profile id, or `user`.

    • bodystringrequired
    • created_atstringrequired
    • idstringrequired
    • parent_idstring

      Set for a reply; replies stay one level deep.

    • ticket_idstringrequired
  • ticketobjectrequired
    • activityobject[]
      • actorstringrequired
      • atstringrequired
      • changesobject[]
        Show 3 nested
        • fieldstringrequired
        • fromunknownrequired
        • tounknownrequired
      • comment_idstring
      • idstringrequired
      • seqinteger· uint64requiredmin 0
      • ticket_idstringrequired
      • typestringrequired

        ticket.created | ticket.updated | ticket.moved | ticket.deleted | ticket.restored | comment.created

    • assigneestring

      Agent profile id.

    • commentsobject[]
      • authorstringrequired

        Agent profile id, or `user`.

      • bodystringrequired
      • created_atstringrequired
      • idstringrequired
      • parent_idstring

        Set for a reply; replies stay one level deep.

      • ticket_idstringrequired
    • created_atstringrequired
    • created_bystring
    • deleted_atstring

      Set when soft-deleted; the row stays on disk.

    • descriptionstring
    • idstringrequired

      Internal uuid.

    • keystringrequired

      Human-readable id, e.g. KAN-1.

    • labelsstring[]
    • orderinteger· uint64min 0

      Position inside its column.

    • prioritystringrequired
    • statusstringrequired

      Column id.

    • titlestringrequired
    • updated_atstringrequired

kanban::comment::list

Function

Read a ticket's comments with filtering, mirroring the kanban:comment trigger: by author, excluding an author, roots only, or after a timestamp.

Request
  • authorstring

    Only comments by exactly this author.

  • exclude_authorstring

    Skip comments by this author — e.g. your own.

  • include_deletedboolean
  • limitinteger· uint64min 0
  • parent_idstring
  • root_onlyboolean
  • sincestring

    ISO timestamp; only comments created after it.

  • ticket_idstringrequired

    Ticket uuid or human-readable key (KAN-1, case-insensitive).

Response
  • commentsobject[]required
    • authorstringrequired

      Agent profile id, or `user`.

    • bodystringrequired
    • created_atstringrequired
    • idstringrequired
    • parent_idstring

      Set for a reply; replies stay one level deep.

    • ticket_idstringrequired
  • countinteger· uint64requiredmin 0

kanban::config::info

Function

Resolved kanban settings: the folder the board file lives in, the columns, and the numbering prefix.

Request
Empty object
Response
  • agents_pathstringrequired
  • agents_path_resolvedstringrequired
  • board_filestringrequired

    Absolute path of board.json.

  • columnsobject[]required

    Board columns left to right.

    • idstringrequired

      Stable column id stored on tickets.

    • labelstringrequired

      Name shown on the board.

  • configuration_idstringrequired
  • data_pathstringrequired

    Configured path, as written.

  • data_path_resolvedstringrequired

    Absolute folder the board file is read from.

  • default_statusstringrequired
  • id_prefixstringrequired
  • prioritiesstring[]required
  • project_rootstringrequired
  • subscribersobjectrequired
    • changeinteger· uintrequiredmin 0
    • commentinteger· uintrequiredmin 0

kanban::on-config-change

Function

Internal: re-read the kanban configuration after an operator change.

Request
  • idstring

    Configuration id that changed.

Response
  • okbooleanrequired

kanban::ticket::create

Function

Create a ticket on the board and return it.

Request
  • actorstring

    Who is making the change. Defaults to `user`.

  • assigneestring

    Agent profile id.

  • descriptionstring
  • labelsstring[]
  • prioritystring
  • statusstring

    Column id; defaults to the configured default_status.

  • titlestringrequired

    Required.

Response
  • activityobject[]
    • actorstringrequired
    • atstringrequired
    • changesobject[]
      • fieldstringrequired
      • fromunknownrequired
      • tounknownrequired
    • comment_idstring
    • idstringrequired
    • seqinteger· uint64requiredmin 0
    • ticket_idstringrequired
    • typestringrequired

      ticket.created | ticket.updated | ticket.moved | ticket.deleted | ticket.restored | comment.created

  • assigneestring

    Agent profile id.

  • commentsobject[]
    • authorstringrequired

      Agent profile id, or `user`.

    • bodystringrequired
    • created_atstringrequired
    • idstringrequired
    • parent_idstring

      Set for a reply; replies stay one level deep.

    • ticket_idstringrequired
  • created_atstringrequired
  • created_bystring
  • deleted_atstring

    Set when soft-deleted; the row stays on disk.

  • descriptionstring
  • idstringrequired

    Internal uuid.

  • keystringrequired

    Human-readable id, e.g. KAN-1.

  • labelsstring[]
  • orderinteger· uint64min 0

    Position inside its column.

  • prioritystringrequired
  • statusstringrequired

    Column id.

  • titlestringrequired
  • updated_atstringrequired

kanban::ticket::delete

Function

Soft-delete a ticket: it leaves the board but stays in the board file.

Request
  • actorstring
  • idstringrequired

    Ticket uuid or human-readable key (KAN-1, case-insensitive).

Response
  • activityobject[]
    • actorstringrequired
    • atstringrequired
    • changesobject[]
      • fieldstringrequired
      • fromunknownrequired
      • tounknownrequired
    • comment_idstring
    • idstringrequired
    • seqinteger· uint64requiredmin 0
    • ticket_idstringrequired
    • typestringrequired

      ticket.created | ticket.updated | ticket.moved | ticket.deleted | ticket.restored | comment.created

  • assigneestring

    Agent profile id.

  • commentsobject[]
    • authorstringrequired

      Agent profile id, or `user`.

    • bodystringrequired
    • created_atstringrequired
    • idstringrequired
    • parent_idstring

      Set for a reply; replies stay one level deep.

    • ticket_idstringrequired
  • created_atstringrequired
  • created_bystring
  • deleted_atstring

    Set when soft-deleted; the row stays on disk.

  • descriptionstring
  • idstringrequired

    Internal uuid.

  • keystringrequired

    Human-readable id, e.g. KAN-1.

  • labelsstring[]
  • orderinteger· uint64min 0

    Position inside its column.

  • prioritystringrequired
  • statusstringrequired

    Column id.

  • titlestringrequired
  • updated_atstringrequired

kanban::ticket::get

Function

Read one ticket with its comments and activity. The id accepts the internal uuid or the human-readable key.

Request
  • idstringrequired

    Ticket uuid or human-readable key (KAN-1, case-insensitive).

Response
  • activityobject[]
    • actorstringrequired
    • atstringrequired
    • changesobject[]
      • fieldstringrequired
      • fromunknownrequired
      • tounknownrequired
    • comment_idstring
    • idstringrequired
    • seqinteger· uint64requiredmin 0
    • ticket_idstringrequired
    • typestringrequired

      ticket.created | ticket.updated | ticket.moved | ticket.deleted | ticket.restored | comment.created

  • assigneestring

    Agent profile id.

  • commentsobject[]
    • authorstringrequired

      Agent profile id, or `user`.

    • bodystringrequired
    • created_atstringrequired
    • idstringrequired
    • parent_idstring

      Set for a reply; replies stay one level deep.

    • ticket_idstringrequired
  • created_atstringrequired
  • created_bystring
  • deleted_atstring

    Set when soft-deleted; the row stays on disk.

  • descriptionstring
  • idstringrequired

    Internal uuid.

  • keystringrequired

    Human-readable id, e.g. KAN-1.

  • labelsstring[]
  • orderinteger· uint64min 0

    Position inside its column.

  • prioritystringrequired
  • statusstringrequired

    Column id.

  • titlestringrequired
  • updated_atstringrequired

kanban::ticket::list

Function

List tickets, optionally narrowed to a column, an assignee or an updated_since timestamp; compact rows carry only key, title, status, priority, assignee and comment_count.

Request
  • assigneestring

    Agent profile id; empty string matches unassigned.

  • compactboolean

    Return the compact row (key, title, status, priority, assignee, comment_count) instead of the full summary.

  • include_deletedboolean
  • limitinteger· uint64min 0
  • statusstring

    Column id.

  • updated_sincestring

    Only tickets updated after this ISO timestamp.

Response
  • countinteger· uint64requiredmin 0
  • ticketsany of[]required
    any of (2)
    Variant 1
    • assigneestring
    • comment_countinteger· uint64requiredmin 0
    • created_atstringrequired
    • deleted_atstring
    • idstringrequired
    • keystringrequired
    • labelsstring[]required
    • orderinteger· uint64requiredmin 0
    • prioritystringrequired
    • statusstringrequired
    • titlestringrequired
    • updated_atstringrequired
    Variant 2
    • assigneestring
    • comment_countinteger· uint64requiredmin 0
    • keystringrequired
    • prioritystringrequired
    • statusstringrequired
    • titlestringrequired

kanban::ticket::move

Function

Move a ticket to a column (and position inside it); used by the board drag and drop.

Request
  • actorstring
  • idstringrequired

    Ticket uuid or human-readable key (KAN-1, case-insensitive).

  • indexinteger· uint64min 0

    Zero-based position in the target column.

  • statusstringrequired

    Target column id.

Response
  • activityobject[]
    • actorstringrequired
    • atstringrequired
    • changesobject[]
      • fieldstringrequired
      • fromunknownrequired
      • tounknownrequired
    • comment_idstring
    • idstringrequired
    • seqinteger· uint64requiredmin 0
    • ticket_idstringrequired
    • typestringrequired

      ticket.created | ticket.updated | ticket.moved | ticket.deleted | ticket.restored | comment.created

  • assigneestring

    Agent profile id.

  • commentsobject[]
    • authorstringrequired

      Agent profile id, or `user`.

    • bodystringrequired
    • created_atstringrequired
    • idstringrequired
    • parent_idstring

      Set for a reply; replies stay one level deep.

    • ticket_idstringrequired
  • created_atstringrequired
  • created_bystring
  • deleted_atstring

    Set when soft-deleted; the row stays on disk.

  • descriptionstring
  • idstringrequired

    Internal uuid.

  • keystringrequired

    Human-readable id, e.g. KAN-1.

  • labelsstring[]
  • orderinteger· uint64min 0

    Position inside its column.

  • prioritystringrequired
  • statusstringrequired

    Column id.

  • titlestringrequired
  • updated_atstringrequired

kanban::ticket::restore

Function

Put a soft-deleted ticket back on the board.

Request
  • actorstring
  • idstringrequired

    Ticket uuid or human-readable key (KAN-1, case-insensitive).

Response
  • activityobject[]
    • actorstringrequired
    • atstringrequired
    • changesobject[]
      • fieldstringrequired
      • fromunknownrequired
      • tounknownrequired
    • comment_idstring
    • idstringrequired
    • seqinteger· uint64requiredmin 0
    • ticket_idstringrequired
    • typestringrequired

      ticket.created | ticket.updated | ticket.moved | ticket.deleted | ticket.restored | comment.created

  • assigneestring

    Agent profile id.

  • commentsobject[]
    • authorstringrequired

      Agent profile id, or `user`.

    • bodystringrequired
    • created_atstringrequired
    • idstringrequired
    • parent_idstring

      Set for a reply; replies stay one level deep.

    • ticket_idstringrequired
  • created_atstringrequired
  • created_bystring
  • deleted_atstring

    Set when soft-deleted; the row stays on disk.

  • descriptionstring
  • idstringrequired

    Internal uuid.

  • keystringrequired

    Human-readable id, e.g. KAN-1.

  • labelsstring[]
  • orderinteger· uint64min 0

    Position inside its column.

  • prioritystringrequired
  • statusstringrequired

    Column id.

  • titlestringrequired
  • updated_atstringrequired

kanban::ticket::update

Function

Update a ticket field (title, description, status, priority, assignee, labels) and return the ticket.

Request
  • actorstring
  • assigneestring

    Agent profile id, or null to unassign.

  • descriptionstring
  • idstringrequired

    Ticket uuid or human-readable key (KAN-1, case-insensitive).

  • labelsstring[]
  • prioritystring
  • statusstring
  • titlestring
Response
  • activityobject[]
    • actorstringrequired
    • atstringrequired
    • changesobject[]
      • fieldstringrequired
      • fromunknownrequired
      • tounknownrequired
    • comment_idstring
    • idstringrequired
    • seqinteger· uint64requiredmin 0
    • ticket_idstringrequired
    • typestringrequired

      ticket.created | ticket.updated | ticket.moved | ticket.deleted | ticket.restored | comment.created

  • assigneestring

    Agent profile id.

  • commentsobject[]
    • authorstringrequired

      Agent profile id, or `user`.

    • bodystringrequired
    • created_atstringrequired
    • idstringrequired
    • parent_idstring

      Set for a reply; replies stay one level deep.

    • ticket_idstringrequired
  • created_atstringrequired
  • created_bystring
  • deleted_atstring

    Set when soft-deleted; the row stays on disk.

  • descriptionstring
  • idstringrequired

    Internal uuid.

  • keystringrequired

    Human-readable id, e.g. KAN-1.

  • labelsstring[]
  • orderinteger· uint64min 0

    Position inside its column.

  • prioritystringrequired
  • statusstringrequired

    Column id.

  • titlestringrequired
  • updated_atstringrequired

kanban::ui-content

Function

Serve the kanban worker's injected console UI assets (content function for its console:script / console:style / console:module triggers).

Request
  • pathstringrequired

    The asset path from the trigger config (e.g. `state/page.js`).

Response
  • contentstringrequired

    The asset source, verbatim.

  • content_typestringrequired

    MIME type the console should serve the asset with.

Triggers2

kanban:change

Trigger

Fires after every kanban mutation with the whole ticket. Config: { ticket_id?, events?, metadata? } — ticket_id matches the uuid or the human key.

Invocation
  • eventsstring[]

    Event names to fire for (ticket.created, ticket.updated, ticket.moved, ticket.deleted, ticket.restored, comment.created). Omit for all.

  • metadataunknown

    Metadata attached to every invocation this binding receives.

  • ticketany of

    `full` (default) delivers the whole ticket; `summary` only its board-card fields.

    any of (2)
    Variant 1
    valuestringenum full, summary
    Variant 2
    valuenull
  • ticket_idstring

    Ticket uuid or human key. Omit to fire for every ticket.

Return
  • activityany of
    any of (2)
    Variant 1
    • actorstringrequired
    • atstringrequired
    • changesobject[]
      Show 3 nested
      • fieldstringrequired
      • fromunknownrequired
      • tounknownrequired
    • comment_idstring
    • idstringrequired
    • seqinteger· uint64requiredmin 0
    • ticket_idstringrequired
    • typestringrequired

      ticket.created | ticket.updated | ticket.moved | ticket.deleted | ticket.restored | comment.created

    Variant 2
    valuenull
  • atstringrequired
  • commentany of
    any of (2)
    Variant 1
    • authorstringrequired

      Agent profile id, or `user`.

    • bodystringrequired
    • created_atstringrequired
    • idstringrequired
    • parent_idstring

      Set for a reply; replies stay one level deep.

    • ticket_idstringrequired
    Variant 2
    valuenull
  • eventstringrequired
  • ticketany ofrequired

    The `ticket` field of a delivery: the whole ticket, or its summary when the binding asked for `ticket: summary`.

    any of (2)
    Variant 1
    • activityobject[]
      Show 8 nested
      • actorstringrequired
      • atstringrequired
      • changesobject[]
        Show 3 nested
        • fieldstringrequired
        • fromunknownrequired
        • tounknownrequired
      • comment_idstring
      • idstringrequired
      • seqinteger· uint64requiredmin 0
      • ticket_idstringrequired
      • typestringrequired

        ticket.created | ticket.updated | ticket.moved | ticket.deleted | ticket.restored | comment.created

    • assigneestring

      Agent profile id.

    • commentsobject[]
      Show 6 nested
      • authorstringrequired

        Agent profile id, or `user`.

      • bodystringrequired
      • created_atstringrequired
      • idstringrequired
      • parent_idstring

        Set for a reply; replies stay one level deep.

      • ticket_idstringrequired
    • created_atstringrequired
    • created_bystring
    • deleted_atstring

      Set when soft-deleted; the row stays on disk.

    • descriptionstring
    • idstringrequired

      Internal uuid.

    • keystringrequired

      Human-readable id, e.g. KAN-1.

    • labelsstring[]
    • orderinteger· uint64min 0

      Position inside its column.

    • prioritystringrequired
    • statusstringrequired

      Column id.

    • titlestringrequired
    • updated_atstringrequired
    Variant 2
    • assigneestring
    • comment_countinteger· uint64requiredmin 0
    • created_atstringrequired
    • deleted_atstring
    • idstringrequired
    • keystringrequired
    • labelsstring[]required
    • orderinteger· uint64requiredmin 0
    • prioritystringrequired
    • statusstringrequired
    • titlestringrequired
    • updated_atstringrequired
  • ticket_idstringrequired
  • ticket_keystringrequired

kanban:comment

Trigger

Fires when a comment is added to one ticket, optionally filtered by author. Config: { ticket_id, author?, exclude_author?, root_only? }.

Invocation
  • authorstring

    Fire only for comments by exactly this author.

  • exclude_authorstring

    Fire for every author except this one — pass your own profile id.

  • root_onlyboolean

    Ignore replies; fire only for top-level comments.

  • ticketany of

    `full` (default) delivers the whole ticket; `summary` only its board-card fields.

    any of (2)
    Variant 1
    valuestringenum full, summary
    Variant 2
    valuenull
  • ticket_idstringrequired

    Required: ticket uuid or human key. A binding without it never fires.

Return
  • atstringrequired
  • authorstringrequired
  • commentobjectrequired
    • authorstringrequired

      Agent profile id, or `user`.

    • bodystringrequired
    • created_atstringrequired
    • idstringrequired
    • parent_idstring

      Set for a reply; replies stay one level deep.

    • ticket_idstringrequired
  • eventstringrequired

    Always `comment.created`.

  • ticketany ofrequired

    The `ticket` field of a delivery: the whole ticket, or its summary when the binding asked for `ticket: summary`.

    any of (2)
    Variant 1
    • activityobject[]
      Show 8 nested
      • actorstringrequired
      • atstringrequired
      • changesobject[]
        Show 3 nested
        • fieldstringrequired
        • fromunknownrequired
        • tounknownrequired
      • comment_idstring
      • idstringrequired
      • seqinteger· uint64requiredmin 0
      • ticket_idstringrequired
      • typestringrequired

        ticket.created | ticket.updated | ticket.moved | ticket.deleted | ticket.restored | comment.created

    • assigneestring

      Agent profile id.

    • commentsobject[]
      Show 6 nested
      • authorstringrequired

        Agent profile id, or `user`.

      • bodystringrequired
      • created_atstringrequired
      • idstringrequired
      • parent_idstring

        Set for a reply; replies stay one level deep.

      • ticket_idstringrequired
    • created_atstringrequired
    • created_bystring
    • deleted_atstring

      Set when soft-deleted; the row stays on disk.

    • descriptionstring
    • idstringrequired

      Internal uuid.

    • keystringrequired

      Human-readable id, e.g. KAN-1.

    • labelsstring[]
    • orderinteger· uint64min 0

      Position inside its column.

    • prioritystringrequired
    • statusstringrequired

      Column id.

    • titlestringrequired
    • updated_atstringrequired
    Variant 2
    • assigneestring
    • comment_countinteger· uint64requiredmin 0
    • created_atstringrequired
    • deleted_atstring
    • idstringrequired
    • keystringrequired
    • labelsstring[]required
    • orderinteger· uint64requiredmin 0
    • prioritystringrequired
    • statusstringrequired
    • titlestringrequired
    • updated_atstringrequired
  • ticket_idstringrequired
  • ticket_keystringrequired

Search the registry

Find workers, kits and executables, or jump to a page.