dsh-node-repl
Manifest validPer-session Node REPL terminal in the DSH web UI: a session-local floating terminal (ghostty-web) bridged over WebSocket to an in-process node:repl that has the live agent Cordis Context (agent.ctx) i
dsh-node-repl
Per-session Node REPL terminal for the DSH web UI. Open a real Node.js REPL
inside any conversation — with the live agent context (ctx, agent) in scope.
Features
- A REPL button in every session header opens a floating terminal window, local to that session (no global overlay, no conversation space taken).
- A real
node:replprompt — Tab completion, up/down history, top-levelawait, ANSI colors,.help/.editor. - The live agent context is in scope:
ctx(=agent.ctx) andagent, soctx.plugin,ctx.effect,ctx.get,ctx.on,ctx.provideall work — plus the usual Node globals (require,process,console,fetch, …). - Draggable and resizable window; collapse keeps the REPL alive, close kills it.
Install
dsh plugin --profile web add dsh-node-repl
Restart dsh web, and the REPL button appears in each session header.
Usage
Open a session, click REPL, and type JavaScript. Top-level await works:
> 1 + 1
2
> await Promise.resolve(42)
42
> ctx.get("webServer") // any service the agent can reach
> agent.id // the session id
Window controls
| Control | Effect |
|---|---|
Header REPL button | open / restore / collapse |
Title bar – | collapse (keep the REPL alive) |
Title bar ✕ | close (kill the REPL) |
| Drag the title bar | move the window |
| Drag the bottom-right corner | resize |
The REPL belongs to its session: refreshing the page, dropping the WebSocket, or disposing the agent kills it (reopen to start fresh).
Notes
The REPL runs inside the DSH host process (not in a child), which is how it
reaches the live agent.ctx. That also makes it a fully-trusted local tool: code
runs unsandboxed and can hang the process — treat it like a shell on that process.
Development
Requires pnpm and Node ≥ 22. Build outputs (lib/) are
generated, not committed.
pnpm install # installs deps and builds (prepare)
pnpm build # rebuild host (tsc) + client bundle (esbuild)
pnpm test # PTY/REPL bridge smoke test
pnpm lint # eslint
pnpm format # prettier --write
Compatibility
Versions
| Latest version | Published | Size |
|---|---|---|
| 0.1.0 | — | — |
| 0.1.1 | — | — |
Comments
Loading…
Similar plugins
by muyuanjin
A session-bound agent-native REPL for DeepSeek Harness PTC mode.
★ 20
MIT
JavaScript
Oct 28, 2026
dsh plugin --profile web add dsh-ptc-plusby CH4ACKO3
Bidirectional RPC between DSH Host and Client through the native Connection and Typert Gateway, with targeted peer calls, cancellation, and connection lifecycle handling.
★ 1
MIT
TypeScript
Sep 19, 2026
dsh plugin --profile web add the-binding-of-dshby kinderao
Phone and remote access to the DSH Web UI: scan a LAN QR code, or reach your PC from anywhere through a self-hosted relay server you run yourself instead of a cloudflared tunnel. Per-device credential
★ 4
↓ 121/wk
GPL-2.0
JavaScript
Sep 17, 2026
dsh plugin --profile web add dsh-pocket-relayby duanyunlun
Per-provider request headers in the DeepSeek Harness Models settings page, with per-conversation ${sessionId} expansion.
★ 0
MIT
JavaScript
Sep 11, 2026
dsh plugin --profile web add dsh-provider-headersby JUNQINGV587
Multi-server SSH terminal panel for the DSH Web GUI: floating terminal window with tabs, side-by-side groups, broadcast, host-owned persistent sessions, and password/private-key/SSH-agent auth.
★ 0
MIT
JavaScript
Aug 19, 2026
dsh plugin --profile web add dsh-ssh-hubby giiiiiithub
Real PTY terminal panel for the DSH Web UI: host half spawns shells with node-pty (cmd.exe default on Windows), rendered in the browser with xterm.js; multi-tab sessions, dock/floating window, clipboa
★ 0
↓ 122/wk
MIT
JavaScript
Aug 15, 2026
dsh plugin --profile web add dsh-terminal