dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Reorder the messages you queued while a DSH agent was busy — inside the official queue dock, not in a panel beside it.
dsh plugin --profile web add -w dsh-queue-reorder
# restart dsh web, then reload the page
Requires DSH >=0.1.2-alpha.1 <0.2.0-0 (earlier client-plugin contracts have no
conversation.input.dock slot). From a checkout instead:
dsh plugin --profile web add -w link:/absolute/path/to/dsh-queue-reorder
Uninstall:
dsh plugin --profile web remove dsh-queue-reorder
Two small halves, no build step, no runtime dependencies:
lib/index.js) registers one same-origin route,
POST /queue-reorder, and performs a single concurrency-checked
agent/inbox.splice('next-turn', …) over the smallest span containing both
ends of the move.lib/client.js) is a hand-authored module-loader bundle. A hidden
conversation.input.dock entry (which renders null) reads the session
snapshot for the queued ids and their order — the dock's DOM carries no ids —
and a MutationObserver decorates the official rows. It re-reads each row's
position at click and drag time, because the dock reorders those very elements
in place.| Refusal | Reason |
|---|---|
QUEUE_CHANGED | Your view of the queue no longer matches the live queue; retry rather than scramble it. |
NON_USER_MESSAGE | The move would discard and reinsert a row whose source the harness still tracks (a goal round prompt, for example), cancelling that work. |
SUBAGENT_UNSUPPORTED | A subagent session's queue is owned by its parent session. |
| Steering rows | Only next-turn (placement: "queued") rows move; next-step stays put. |
A refused move changes nothing: every guard runs before the splice.
[data-queue-dock], its
row list, the trailing action container). Those are implementation details of
@deepseek-ai/dsh-client-ui-conversation, not a published contract: if the dock
is restructured, the controls may stop appearing. It fails soft — the dock keeps
working, you just lose the grip until this plugin catches up.selftest.mjs.node selftest.mjs
No network, no browser, no build. 32 assertions covering the move transaction, every refusal, the request decoder, the HTTP surface, and the dock decoration (injection idempotence, live index reads, drop marking, notice reporting).
MIT