Every field below was read from real packages, not guessed.
| Field | Sample value | What it does |
|---|---|---|
| name | @deepseek-ai/dsh-tools | Package name; used by install and by bundles |
| version | 0.1.2-alpha.5 | Same generation as the host; the convention is to track it |
| type | module | ESM. Plugins must use import/export; CommonJS will not work |
| main | lib/index.js | Entry point exporting name and apply(ctx) |
| exports | {'.': …, './invariant': …} | Subpath exports. Client plugins also export ./client |
| dsh.bundle.patch | ./cordis.patch.yml | The entry point for inserting into the host.Without it an installed plugin does nothing |
| dsh.client.inject | ["@deepseek-ai/dsh-…"] | Injection targets for client plugins. A host missing them hangs silently |
| dsh.compatibility | (dsh-context only) | Compatibility declaration; third parties may define their own subtree |
| engines.dsh | >=0.2.0-rc.2 || … | Declares the supported host range. Measured: unsatisfied still installs and composes, unblocked |
| engines.node | ^22.19.0 || >=24.0.0 | The only real gate, and only an npm EBADENGINE warning |
| peerDependencies | cordis / dsh-agent / … | Dependencies the host provides rather than the plugin bundling them |
The field most easily missed
dsh.bundle.patch. A package with only main and no patch adds nothing to dump-config after install — not broken, just never intended to insert anything (it may exist as a library for others). This field is the fastest way to tell a plugin from a library.
The two engines fields are nothing alike
engines.dsh: a declaration only. Measured here, a plugin requiring >=0.2.0-rc.2 installed onto 0.1.2 succeeded, composed fine, and was refused by nothing.engines.node: npm validates it, but only with anEBADENGINEwarning that does not block installation.
So do not expect a declared version requirement to protect you. What actually breaks is a package named in
dsh.client.inject that the host lacks — that gives no warning at all, just a silent hang. Judge loadability by the inject difference, not by engines.