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

@lmzhen/dsh-evolution-approval

v0.3.81

Published

Stage/pending approval service for Hermes-style self-evolution writes (community build)

Downloads

22,995

Readme

@deepseek-ai/dsh-evolution-approval

Stage/pending approval service for Hermes-style self-evolution writes.

DSH native approval is one-shot; this service adds the Hermes staged queue: request() stores background writes, approve() replays them through a runner, and reject() discards them. The model-facing write tools register their own runners — tool-memory via registerRunner('memory', …) and tool-skill-manage via registerRunner('skill', …) — so staged writes are replayable only when the corresponding tool package is composed.

Run the package tests:

node node_modules/vitest/vitest.mjs run packages/evolution/evolution-approval/tests   # overlay layout
# flat mirror: node node_modules/vitest/vitest.mjs run packages/evolution-approval/tests

Model Experience

Indirect model surface

What the model sees

@deepseek-ai/dsh-evolution-approval registers no direct prompt or tool schema itself. Model-visible effects are owned by the packages that consume this service.

Token effect

Zero direct token effect from this package; consumers add any model-visible tokens.

KV Cache effect

Independent of request-prefix construction. This package does not alter the assembled prompt or tool list.

Known Limitations and Deferred Work

  • approve() deduplicates concurrent approvals inside one process, and state providers resolve the pending record atomically. However, the replay runner executes before that atomic resolution, so two OS processes approving the same id can each perform the write once while only one process wins the audit transition. Run approvals from a single writer process, or make replay runners idempotent when multi-process approval is required.
  • Concurrent approve + reject on the same id (F-204). Inside one process the dedupe keys are approve:<id> / reject:<id>, so the two paths are not serialized against each other. When an approve runner is slow, a reject resolves the still-executing record to rejected without holding a claim; the runner may then complete and the write can still land while the audit history reads rejected — the write effect, not the audit verdict, is what actually persists (写效果以实际为准). reject on an executing record reports this and asks you to verify the write state manually. Only reject a write after confirming no approve is in flight, or verify the write effect manually afterwards.
  • No staged-content freshness re-validation (F-328). The staged record stores the args snapshot captured at request time and replays exactly those args, but does not record a content hash, so approve() does not re-check whether the on-disk skill/memory the write targets changed since staging. The write is applied as staged regardless. The pending surface (/evolution pending --detail) exposes the staged args so you can review what will actually be replayed before approving; there is no automatic drift warning if the target changed in the meantime.

Runtime invariant: No companion is published. The platform auto-assembles nothing and the family mounts no <pkg>/invariant cordis row, so a companion here would never execute (v37 S2.1 / I-3).