imrascal/dsh-archive
dsh-archive
dsh-archive is a community DeepSeek Harness plugin. Read the repository README before installing.
Install
npx @deepseek-ai/dsh plugin --profile web add github:imrascal/dsh-archiveRestart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/dsh-archive)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from imrascal/dsh-archive, cleaned of badges and images.
@imrascal/dsh-archive
A DeepSeek Harness (DSH) plugin that manages archived sessions and the trash from the settings panel.
- Archived Sessions: review sessions that are hidden from the sidebar but keep their records; restore them individually or all at once, or move them to the trash.
- Trash: review deleted sessions; restore, permanently purge, or empty the whole trash.
Deletes are reversible: deleting a session moves it to the trash (~/.dsh/trash); only
purge / empty trash are permanent. Live (running) sessions refuse deletion with a clear message.
Install
dsh plugin --profile web add github:imrascal/dsh-archive
Or from a local checkout:
dsh plugin --profile web add file:C:/path/to/dsh-archive
Restart the app after installing (the host half loads at boot), then refresh the page — the section appears under Settings → Archived Sessions.
dsh pluginforwards to pnpm, sopnpmmust be on your PATH.
How it works
This feature originally lived as in-box patches across 12 files
(dsh-workspace, dsh-session-persistence-jsonl, dsh-host-apiproxy, dsh-client-runtime,
dsh-client-ui-workspace, ... — reference diffs in patches/). This plugin re-implements
it as a standalone package with a dual-path design:
| Path | When | Behavior |
|---|---|---|
| Native | host/client already carry the archive API | the client calls ctx.workspaces.unarchiveSession / trashList / ... directly — same RPC + store-frame sync as the in-box implementation |
| Fallback | an app update reverted host or client to stock | the host half patches at runtime: adds the trash layer to sessionPersistence and the archive API to workspaceRegistry; the client talks to the plugin's own /dsh-archive/session HTTP route |
So the feature survives app updates: trash data lives in ~/.dsh/trash (data, not code) and the
archive set lives in the workspace registry's persisted state. Whatever the update does to the
packages, the plugin feature-detects at startup and fills in whatever is missing.
Layout
dsh/index.js host half: persistence trash layer + registry archive API + /dsh-archive/session route
dsh/client.js browser half: "Archived Sessions" settings section (settings.section slot), no build, react only
cordis.patch.yml bundle mount declaration
patches/ reference diffs for the in-box host patches (the client patches are replaced by this plugin)
scripts/ eval-check.mjs (client factory eval) and host-logic-test.mjs (host backend lifecycle)
Migrating from an in-box patch (optional)
If your DSH install already carries the local archive-management patches (as this repo's dev
machine did), the plugin and the in-box patch would register the same archived-sessions section.
To migrate:
- Restore
node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/client.jsto the official release (drops the embedded ArchivedSessionsSection registration; the host patches may stay — the plugin detects them and no-ops). - Install and restart this plugin.
- The plugin stands down automatically when the same section id already exists; once the in-box patch is removed the plugin takes over.
To move the host side back to stock as well, back up
~/.dshfirst, reversepatches/, and let this plugin's host half re-add the backend. Trash data and the archive set are unaffected.
Data safety
…

