nc://duty

v0.1.0Pinned
ThomSharktools/nodecode-duty: A read-only board of what waits on you, what is running, what got no answer and what broke. - a rewrite of xiaoyaner0201/hermes-duty-board (Apache-2.0), credited to xiaoyaner02011063d8f· 9 Nov1 commit
test2 filescell.lisp21.0 KBLICENSE11.1 KB

nodecode-duty

Duty Board: what is waiting on you, what is running and what broke, in one read-only board. A Nodecode rewrite of xiaoyaner0201/hermes-duty-board by xiaoyaner0201.

Work spreads across sessions: a conversation where the answer asked you something and waits, a turn that has been quiet for an hour, one that started and never came back, a cron job failing since Tuesday. The duty board puts all of it on one page, cheapest possible: it calls no model, reads no message text, and changes nothing.

Get it

Tell the agent "add the duty cell", or run nodecode add nc://duty.

Set it up

Nothing is required. The duty section has three members, all with defaults: how far back a conversation still counts as in flight (window_hours, 72), when a running turn is called stalled (stall_minutes, 10), and how many rows a section prints (limit, 20).

"duty": { "window_hours": 72, "stall_minutes": 10, "limit": 20 }

Use it

Ask the agent what is waiting on you, what is stuck, or what broke while you were away -- it calls the duty tool -- or type /duty yourself. The command takes a section: /duty waiting, /duty running, /duty unfinished, /duty cron, /duty goals; /duty counts is the one-line count and /duty alone is all of it.

duty: 1 waiting on you, 1 running, 1 unanswered, 2 cron in trouble, 1 goal
  ◆ Waiting on you (1)
    ? Plan the offsite  [cli]  waiting 5m  "which venue?"
  ◆ Running (1)
    ◐ Refactor billing  [tui]  running 2h00m  quiet for 2h00m (stalled)
  ◆ Started, no answer (1)
    ✗ Nightly notes  [discord]  started 15m ago, no answer yet
  ◆ Cron trouble (2)
    ⚠ cron 'nightly-backup'  last run FAILED: code 1 stderr: no target
    ⚠ cron 'morning-digest'  paused  answer awaiting delivery
  ◆ Standing goals (1)
    ◎ goal g-1  [s1]  8 turns  the suite passes  check: make test
Section What appears
Waiting on you A conversation whose newest answer asked the person something, oldest first, with the question the harness recorded and how long it has waited.
Running A turn in flight now, with its running time, flagged (stalled) once it has been quiet past stall_minutes.
Started, no answer A turn that began and left no ending: you wrote, and nothing answered.
Cron trouble A job whose last run failed, one paused, or one whose answer was never delivered, with the last line of its failure and its next fire.
Standing goals The goals of this home that have not ended, with their turn budget and their check.

The first two sections always print, so an empty home reads as all clear. A source that could not be read -- no store, no cron jobs yet, an older image -- is named in the Not read footer instead of failing the read.

A script can read the board itself: (nodecode-duty:snapshot) answers a plist (:waiting, :running, :unfinished, :cron, :goals, :sources), (nodecode-duty:duty-text :only "waiting") the text, and (nodecode-duty:counts-text) the one line.

What it reads

All read-only, through their public readers; nothing is written.

Source Store
Sessions The session directory in the store: titles, sources, when each was last touched, which answer waits on the person, and which turn is the newest.
Cron The cron cell's registry row, when jobs exist: state, last outcome, an answer still owed.
Goals The goal.set facts of this home, minus those a goal.ended fact closed.

License

Apache-2.0, the original's (see LICENSE and NOTICE).

Add nc://duty

  1. 1

    Install Nodecode

    Once per machine.

    $ curl -fsSL https://nodecode.ai/install.sh | sh
  2. 2

    Add the cell

    Pinned at 1063d8f.

    $ nodecode add nc://duty

    Or tell the agent add the duty cell.