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

dsh-debate

v0.1.10

Published

Multi-agent debate plugin for DeepSeek Harness: multi-round convergence, tool-verified adjudication, disagreement ledger, and human sign-off, with per-role multi-vendor model routing.

Readme

dsh-debate

Multi-agent debate plugin for the DeepSeek Harness (DSH): a multi-round convergence + final-draft review pipeline with a tool-verified adjudication defense line and per-role multi-vendor model routing.

What it does

  • Full debate pipeline (not the one-round compressed variant): participants read each other's statements and critiques, revise their positions, converge, then adjudicate, and the adjudication result is itself re-reviewed before release.
  • Adjudication defense line: contested claims are verified with real tools (code execution / fact retrieval), every open disagreement is tracked in a structured ledger, and a human retains final sign-off — the system never trusts the adjudicator to be right.
  • Multi-vendor routing: each role (proposer / opponent / adjudicator / reviewer / drafter / cheap worker) is bound to its own provider+model, so a debate really runs across at least two independent vendors (recommend three vendors + one cheap model for drafts and summaries).
  • Configurable in the UI: rounds and model routing are chosen at runtime and persisted to .debate/config.json, not hard-coded.

Architecture

| Layer | Responsibility | Where | | --- | --- | --- | | Engine (pure) | Config validation, round/convergence state, disagreement ledger, evidence blocks, sign-off state machine | src/engine/ | | Host adapter | run_debate / debate_config model tools; spawns per-role subagents via ctx.subagents with provider/model | src/dsh/plugin.ts | | Client UI | Config panel, composer capsule, run card, sign-off control | src/client.ts |

The engine is deliberately free of DSH dependencies so it can be unit-tested and CI'd without a live harness.

Layout

src/
  engine/        # pure, dependency-free debate core
    types.ts config.ts rounds.ts ledger.ts signoff.ts debate.ts index.ts
  dsh/
    config-file.ts   # .debate/config.json persistence (injected fs)
    plugin.ts        # Host cordis plugin: run_debate + debate_config tools
  client.ts           # Client cordis plugin: slots UI + sign-off control
  index.ts            # package entry (Host plugin + engine re-exports)
test/                 # Node built-in test runner

Install

Option A — from the npm registry (once published)

dsh plugin --profile <name> add dsh-debate
# or, in any npm project:
npm install dsh-debate

Option B — straight from GitHub (no npm account/publish needed)

npm install git+https://github.com/Zleitai/dsh-debate.git

The package's prepare script builds lib/ automatically during a git install, so no manual build step is needed. In a DSH deployment, add the same git URL to the project dependencies, then add the composition rows below.

The Cordis and DSH runtime packages are peerDependencies pinned to the harness line this plugin was built against. DSH profiles resolve them from the Harness installation, keeping one shared runtime and scope registry.

Compose the Host tool (agent preset)

Add one loose row to your agent preset's agent.cordis.yml (it publishes no service, so it needs no isolate realm):

- id: tool-debate
  name: dsh-debate
  config:
    subagentProvider: spawn        # the ctx.subagents provider that spawns each role
    configPath: .debate/config.json
    maxRoundsCap: 10

Client UI

The package's dsh.client declaration exposes the browser bundle automatically when the dsh-debate agent-preset row is active. Do not mount dsh-debate/client in the host composition; that bundle runs in the browser.

Usage

  1. Configure roles and rounds in the "多智能体辩论" panel (settings section or the composer dock), or by calling the debate_config tool.
  2. Ask the agent to run a debate: it calls run_debate { topic }, which converges over the configured roles/vendors and returns a draft + disagreement ledger + verdict.
  3. With sign-off enabled (default), accept or reject the draft in the run card. A rejected draft can be revised and re-presented.

Development

Requires Node >= 24 (tests run TypeScript natively via type stripping).

npm install
npm test           # node --test
npm run typecheck  # tsc --noEmit
npm run build      # tsdown -> lib/*.mjs + *.d.mts

Publish notes: npm run build emits lib/ (gitignored). Publish with npm publish --access public after setting your git identity and a git remote; the peerDependencies carry the @deepseek-ai/dsh-* runtime contract (resolved from the next npm dist-tag, e.g. 0.1.2-rc.1).