Bundle
dsh-session-port
DSH plugin: bundle a session (logs, subagents, referenced media + workspace files) into one ZIP and restore it — GET/wsx/session-pack, POST/wsx/session-pack/import + Session Header Export/Import actions
- Source
- seth-hg
- License
- MIT
- Updated
- Updated 23 hours ago
Readme
# dsh-session-port Port a session in and out of DeepSeek Harness — bundle one session into a single ZIP and restore it anywhere. [中文](README_zh.md) ## What it does Export a session with everything it references — the log (root + subagents), media, and the workspace files — into one archive, then import that archive on another DSH, fully restored and re-attached to its workspace. | Action | What it does | | --- | --- | | **Export** | Streams one ZIP: manifest → logs → subagents → media → referenced workspace files | | **Import** | Restores sessions, media, and workspace files; remaps paths; auto-attaches the session to its workspace | | **Repair** | Re-attaches an imported session and re-folds its title (fixes "ungrouped" / missing name) | ## Install Requires Node.js ≥ 22.10 and `pnpm` (`dsh plugin` uses pnpm underneath). ```sh # From GitHub (default branch, or pin a tag) dsh plugin --profile web add "github:seth-hg/dsh-session-port" dsh plugin --profile web add "github:seth-hg/dsh-session-port#v0.1.4" # From a local checkout dsh plugin --profile web add /path/to/dsh-session-port ``` Restart `dsh web`. Two **Export / Import** buttons appear in the session header. ## Usage ### From the session header - **Export** — downloads `session-port-<id>.zip`. - **Import** — pick a `.zip`; it restores into the current session's workspace (the header cwd). Import also accepts DSH's built-in session-log export (the header `/export` download): it restores the root session, subagents, and media. That export carries no workspace files, so none are expected. ### From the HTTP routes (loopback-trusted) ```sh # Export (scope=referenced by default, or workspace) curl 'http://127.0.0.1:3080/wsx/session-pack?sessionId=<id>&scope=referenced' -o out.zip # Import into a workspace (path remap: old::new) curl -X POST 'http://127.0.0.1:3080/wsx/session-pack/import?workspace=/path/to/workspace&remap=/old::/new' \ --data-binary @out.zip # Repair an imported session (re-attach + re-fold title) curl -X POST 'http://127.0.0.1:3080/wsx/session-pack/repair?sessionId=<id>' ``` ## HTTP API | Route | Method | Purpose | | --- | --- | --- | | `/wsx/session-pack?sessionId=<id>&scope=referenced\|workspace&level=0-9` | GET | Stream the ZIP archive | | `/wsx/session-pack/import?workspace=<dir>&remap=<old>::<new>` | POST | Restore an archive (JSON summary) | | `/wsx/session-pack/repair?sessionId=<id>` | POST | Re-attach + re-fold title (idempotent) | ## License MIT
Install
dsh plugin --profile web add github:seth-hg/dsh-session-port
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-session-port from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.