Bundle
dsh-queue-director
DSH web plugin: reorder queued messages (up / down / top / bottom) before the agent processes them.
- Source
- loklamlok
- License
- MIT
- Updated
- Updated 3 days ago
Readme
# dsh-queue-director
**[English](README.md) | [中文](README.zh.md)**
A [DeepSeek Harness](https://github.com/deepseek-ai) web plugin that lets you **reorder queued messages** (up / down / top / bottom) before the agent processes them — handy when writing long articles or running a batch of prompts in your own preferred order.
## Features
- Each queued message gains `↑` / `↓` buttons; when the queue is expanded, **Move to top** / **Move to bottom** chips appear as well.
- **Drag to reorder**: grab a message row (or its `⠿` handle) and drop it anywhere in the queue.
- **Send all now**: promote every queued message to the AI at once (works while the task is running).
- **Clear queue**: remove all pending messages in one click (with a two-step confirm to prevent accidents).
- Built-in queue behaviors are preserved: preview, inline edit, remove, and send-now (steer).
- No server restart needed after an update: DSH's client HMR pushes the new bundle automatically (a hard refresh of the page is enough).
## How it works
- **Host half** (`lib/index.js`): registers one trusted HTTP endpoint `POST /queue-director/api/reorder`, which reorders pending inbox items via `agent.inbox.splice` — the same durable path the built-in `session.updateQueue` RPC uses, so the client snapshot refreshes automatically. The route uses the same browser-trust fence as dsh-better-sidebar (loopback / trusted hosts + same-origin checks).
- **Client half** (`lib/client.js`): shadows the built-in `conversation.input.dock` entry (`id: "queue"`, `priority: -1` — lowest renders), redrawing the queue strip with the extra reorder controls.
- No DSH source is modified; the plugin mounts as a bundle via `dsh.profile.bundles`.
## Requirements
- DeepSeek Harness web profile (`@deepseek-ai/dsh-web-app`), `dsh` launcher
- Node.js ≥ 20
## Install
The plugin is not published to npm yet, so install it from source:
```sh
# 1. Clone the repository anywhere you like
git clone https://github.com/loklamlok/dsh-queue-director
# 2. In your DSH web profile directory ($DSH_HOME/profiles/web),
# add the dependency (adjust the path to your clone):
# "dependencies": { "dsh-queue-director": "link:<path-to-repo>" }
# 3. Register the bundle in package.json:
# "dsh": { "profile": { "bundles": [..., "dsh-queue-director"] } }
# 4. Install and restart
pnpm install
# restart `dsh web`, then hard-refresh the page (Cmd/Ctrl+Shift+R)
```
## Uninstall
```sh
cd "$DSH_HOME/profiles/web" && pnpm remove dsh-queue-director
# and remove "dsh-queue-director" from dsh.profile.bundles in package.json
```
## Development
- `lib/index.js` — host half (route + reorder logic; `reorderInbox` is exported for tests)
- `lib/client.js` — client half (`window.__ModuleLoader__.load` factory, no build step)
- `cordis.patch.yml` — bundle patch (inserts the plugin entry into the loader)
## License
[MIT](LICENSE)
Install
dsh plugin --profile web add github:loklamlok/dsh-queue-director#690a72e7fc6c2502e7f59b443d69223cba796d90
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-queue-director from the hub