npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@yin52133/dsh-luban-taskboard

v0.1.3

Published

Durable six-column taskboard and autonomous agent work queue for DSH

Readme

@yin52133/dsh-luban-taskboard

Durable six-column work queue for people and DSH agents. The Web board, taskctl, the importer, and autonomous scheduler all use one authenticated API and one atomically written JSON ledger.

Features

  • backlog → todo → doing → review → done with a separate dropped terminal state, explicit transition rules, and optimistic versions.
  • Responsive six-column board with drag-and-drop plus native select/button status controls for touch and keyboard input, with host, workspace, and tag filters.
  • Status changes validate the current card state and optimistic version, reject stale/forged drag data, and use a synchronous board-wide lock to prevent rapid duplicate submissions before the disabled state renders.
  • Direct links from each task card to authenticated Plan documents associated by the shared taskId contract when @yin52133/dsh-luban-plan is installed.
  • Atomic agent claiming, acceptance criteria, session binding, progress and output records, and human review of autoDone work.
  • Bounded SSE replay with a full baseline after an event gap.
  • Cross-process locked, fsync/rename persistence with one backup per local calendar day and seven retained write days by default.
  • Disabled-by-default night execution with host/tag allowlists, daily quota, and a durable next-day circuit-breaker reset. Night agents use an explicit model and inherited-tool allowlist that do not fall back to the interactive agent.
  • Fail-closed autonomous completion: idle alone is never success. The scoped result tool must record one successful, evidence-backed acceptance report in the durable session log before the task can enter Review as autoDone.
  • Idempotent import of common dashi-taskboard and cloader JSON fields.

Installation

Install the authentication boundary first, then add this plugin to the same DSH profile:

dsh plugin --profile web add @yin52133/dsh-luban-auth @yin52133/dsh-luban-taskboard

Keep the DSH WebServer on loopback and access the profile through the @yin52133/dsh-luban-auth sidecar. The taskboard route is /luban-taskboard; the browser page appears under 鲁班工作台 → 任务看板 in the main sidebar.

Configuration

- insert:
    - id: luban-taskboard
      name: @yin52133/dsh-luban-taskboard
      config:
        store: { dir: ~/.dsh/luban/taskboard }
        hostScope: auto
        claim: { requireAcceptance: true }
        night:
          enabled: false
          window: 23:30-06:30
          dailyQuota: 5
          hostScopeWhitelist: [ubuntu]
          tagWhitelist: [auto-ok]
          model: { provider: '', id: '' }
          toolAllowlist: []
          circuitBreaker: { maxConsecutiveFailures: 3 }

Night mode remains off until explicitly enabled. It only claims todo tasks that have acceptance criteria and match both task allowlists. Before enabling it, set model.provider and model.id to a DSH provider route/model and list every inherited tool the night agent may use in toolAllowlist; an empty list leaves only the scoped result-reporting tool. Missing model configuration, unknown tools, a missing/failed/duplicate report, unmet acceptance, or a non-completed final turn all fail closed and return the task to todo.

taskctl talks to the same /luban-taskboard HTTP API. Put the complete Cookie header in LUBAN_SESSION_COOKIE and the authenticated request token in LUBAN_CSRF_TOKEN; neither value is accepted as a command-line argument.

Task lists, claims, and event streams are intended to be scoped to the M01 accountId; one account must not see or mutate another account's tasks.

taskctl list --status todo --tag auto-ok
taskctl add --title "Verify firmware" --hostScope ubuntu --priority P1 \
  --acceptance "CI artifact and test log are attached"
taskctl claim --session agent-123 --tag auto-ok

Demo

Create a card with acceptance criteria, drag it from Todo to Doing (or select Move to Doing and press Move on a touch/keyboard-only device), and open a second browser. Both views refresh from the SSE task event. Autonomous results return to Review with an Auto-completed · review required marker; only the human review → done transition clears that marker. A card linked to one or more plans opens each generated Markdown document directly; a profile without the Plan plugin keeps the board available without those links.

Compatibility

Tested with DeepSeek Harness 0.1.2-rc.1, Cordis 4.0.2, and Node.js 22.19+. The host adapter uses public AgentRegistry.create({ agentOptions, setup }), agent-scoped tools.restrict({ allow }), followup(), whenIdle(), and durable session events; it does not require unreleased session-controller APIs.

Platform Support

The same package runs on Windows and Ubuntu. Each host owns a ledger named <hostname>-ledger.json; hostScope controls which local agent may claim a task. Cross-host ledger aggregation is outside this package.

M03 supervises the containing DSH profile process at the deployment boundary. The night executor itself is an in-process AgentRegistry handle, so it owns and drains that handle but intentionally does not call KeepaliveService.ensureAlive to launch a duplicate copy of its own host. Deploy the profile under M03's tmux/service strategy when process-level restart recovery is required.

License

MIT. See THIRD-PARTY-NOTICES.md. The implementation is original; referenced taskboard projects informed requirements only and no source or interface assets were copied.