@cryptocurpays/dsh-remote-tools
Out-of-tree dsh bundle: remote-host tools — discovery, an SSH terminal backend, and model-facing tools — mounted beside the shipped dsh profiles instead of inside the upstream tree. This keeps upstream upgrades cheap: the bundle only tracks the public seams it uses, never the upstream codebase's internal structure.
What it contains
cordis.patch.yml is the bundle overlay that mounts all five.
Prerequisite: patch dsh-terminal params
dsh plugin add only installs this bundle. It does not modify DeepSeek Harness. SSH still needs TerminalSpawnRequest.params so remote_open can pass hostRef through ctx.terminals.spawn. Stock dsh-terminal forwards type / name / cwd only; without the field, spawn throws params.hostRef is required.
After you install dsh, apply the patch to the dsh source checkout you actually run, then rebuild that checkout if you launch from source:
cd /path/to/deepseek-harness
git apply /path/to/dsh-remote-tools/patches/terminal-params.patch
Get the patch from this repo (patches/terminal-params.patch); the npm tarball of @cryptocurpays/dsh-remote-tools does not replace dsh-terminal. Skip the apply only when that checkout's TerminalSpawnRequest already declares params. Re-apply after every dsh upgrade that drops the field. Details: docs/terminal-params-patch.md.
Install (recommended)
Install the bundle into a profile with dsh plugin add so every plugin resolves through the profile's node_modules without --patch:
dsh --profile web-remote --from-default-profile web --dump-config # create profile, print, exit (no remote-* rows yet)
dsh plugin --profile web-remote add @cryptocurpays/dsh-remote-tools
dsh --profile web-remote --dump-config # optional: expect terminal + five remote-* plugin rows
dsh --profile web-remote
Before the npm release, install from git: dsh plugin --profile web-remote add github:cryptocurpays/dsh-remote-tools.
Step-by-step notes: docs/install.md. The root package's prepare script transpiles each plugin to lib/index.js during install.
Dev overlay (optional)
While developing against a source checkout of dsh:
dsh web --patch /path/to/dsh-remote-tools/cordis.patch.yml
Upgrade workflow (when a new dsh releases)
- Pull the new dsh into your environment.
- Re-apply
patches/terminal-params.patch if that upgrade does not already ship TerminalSpawnRequest.params.
- Run this bundle's checks (below).
- Fix only if a seam API you use changed (
ctx.tools, ctx.terminals, ctx.credentials, ctx.systemPrompt) — rare and usually one call site.
- Re-install or update the profile bundle:
dsh plugin --profile web-remote update @cryptocurpays/dsh-remote-tools.
Development
The bundle typechecks and tests against a local dsh checkout read-only; it never modifies it. tsconfig.base.json maps every @deepseek-ai/* name to harness source paths — machine-local by design. Install-time emit uses esbuild and keeps @deepseek-ai/* external so the running dsh satisfies peers.
cd /path/to/dsh-remote-tools
pnpm install # needs harness node_modules symlink or a local install
pnpm run build # packages/*/lib/index.js
pnpm run typecheck
pnpm run test # from harness: pnpm exec vitest run --config /path/to/dsh-remote-tools/vitest.config.ts packages
Before publishing to npm, replace "*" peer ranges with semver that matches the released @deepseek-ai/dsh-* versions you support.
Mounting into a source-mode dsh checkout
Do not copy packages into a harness tree. Build or link dsh, then follow docs/install.md. The old workspace-member mount is retired; docs/local-mount.md only records that.