@cryptocurpays/dsh-remote-tools
v0.1.1
Published
Out-of-tree dsh bundle: remote-host discovery (JumpServer + file providers), an SSH terminal backend, and model-facing remote tools
Readme
@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
| Package | Role |
|---|---|
| packages/remote-hosts | Service Definition: ctx.remoteHosts discovery directory (provider registry, resolution, known-host dictionary, live-session map) |
| packages/remote-hosts-jumpserver | Provider: parses pasted JumpServer SSH connect commands |
| packages/remote-hosts-file | Provider: static test servers from a YAML document |
| packages/terminal-ssh | Transport: SSH PTY backend registered on ctx.terminals |
| packages/tool-remote | Consumer: remote_search / remote_open / remote_exec / remote_close / remote_close_all tools |
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.patchGet 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-remoteBefore 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.ymlUpgrade workflow (when a new dsh releases)
- Pull the new dsh into your environment.
- Re-apply
patches/terminal-params.patchif that upgrade does not already shipTerminalSpawnRequest.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 packagesBefore 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.
