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

@everme/qoder

v0.7.10

Published

Native EverMe memory hooks for Qoder CLI.

Readme

@everme/qoder

Native EverMe memory hooks for Qoder CLI.

What it does

Qoder CLI runs the same hook engine that QwenWork embeds through @qoder-ai/qoder-agent-sdk. The engine follows the Claude Code hook contract: stdin carries the hook input as JSON, stdout is parsed as hook output, and exit code 2 blocks the operation. evercli plugin install qoder registers three events:

| Event | Mode | What it does | |---|---|---| | SessionStart | sync | Injects the durable Profile block once per session. | | UserPromptSubmit | sync | Injects recall for the prompt as additionalContext. | | Stop | async | Captures the finished turn and uploads it. |

The install also does these steps:

  • It stages this bundle at <config-dir>/everme/.
  • It writes credentials to <config-dir>/everme.env with mode 0600.
  • It adds the three hooks to <config-dir>/settings.json. Other keys and the user's own hooks stay unchanged.

<config-dir> is ~/.qoder for the global edition and ~/.qoder-cn for the China edition. The installer selects ~/.qoder-cn when QODERCLI_SITE=cn is set, or when only ~/.qoder-cn exists.

Each hook command passes the config dir as an argument after the event name. This lets one staged bundle read the credentials of the edition that called it.

No MCP entry is written. The hooks already inject recall and the profile. The location where Qoder CLI reads user-scope MCP servers is not verified yet.

Start a new Qoder CLI session after install so that it loads the hooks.

Why Stop, and why async

  • SessionEnd fires only when the CLI exits. If it were the capture boundary, a long interactive session would stay uncaptured until exit. Stop fires once per turn, so this package uses it.
  • A synchronous upload on every Stop would block each turn, so Stop is registered with async: true. The host does not wait for it and does not read its stdout.
  • PostToolUse is not registered. It would start one process per tool call for data that the transcript already contains.

How a turn is read

Every hook payload carries transcript_path, which points to <config-dir>/projects/<cwd-slug>/<session-uuid>.jsonl. Capture reads that file. It does not rebuild a turn from event fields.

The transcript reader is a copy of the @everme/qwenwork reader, because the two hosts write the same format. Read that package's README for the selection rules, the native checkpoint, and the filters. Hosts never import each other. Moving the reader into @everme/agent-sdk is a separate change.

Configuration

The hook reads its credentials from <config-dir>/everme.env, which evercli writes. You can override the location in these ways:

  • EVERME_ENV_FILE_PATH sets the path of the credential file.
  • EVERCLI_QODER_CONFIG_DIR sets the config dir when no argument names it.

Without credentials the hooks are silent: no output, no error, exit code 0. Memory must never block a turn, so every failure path exits with code 0 and writes one line to stderr.

Uninstall

evercli plugin uninstall qoder

To uninstall manually, do these steps:

  1. In <config-dir>/settings.json, remove the everme-named handlers from hooks. Keep every other hook. Remove an event key only if it becomes empty.
  2. Run rm -rf <config-dir>/everme <config-dir>/everme.env.

Tests

npm test --workspace @everme/qoder

License

Apache-2.0