Bundle
my-image-drop
DeepSeek Harness plugin: drag images into the composer and get a file path back, so text-only models can read them via the read tool.
- Source
- yangpeng-space
- License
- MIT
- Updated
- Updated 4 days ago
Readme
# my-image-drop
A [DeepSeek Harness](https://github.com/deepseek-ai/dsh) plugin that turns **drag-and-drop of images** into **file paths** in the composer, so text-only models can read them with the `read` tool (or a vision skill) instead of failing image admission.
## How it works
- **Host half** (`dsh/index.js`): registers a loopback route `POST /my-image-drop`. It accepts an image, magic-byte checks and size-caps it (25 MB), writes it as a private (`0600`) temp file under `<tmpdir>/my-image-drop`, and returns `{ "path": "..." }`.
- **Browser half** (`dsh/client.js`): a capture-phase `drop` listener (plus `dragenter`/`dragover` to enable dropping). On a drop that carries image files, it uploads each to `/my-image-drop` and inserts the returned path into the focused composer as plain text. It also dispatches a synthetic `dragend` so the composer's drop overlay dismisses.
The composer shows a file path in the input box. Send it and the model gets a path — the primary trigger for the `read` tool and vision skills.
## Install
From the GitHub source (git install runs `prepare`; no build needed, the entry is committed):
```bash
dsh plugin add github:<owner>/my-image-drop
```
Or add the bundle to your profile:
```json
{
"dsh": { "profile": { "bundles": ["my-image-drop"] } }
}
```
## Scope
This plugin handles **drag-and-drop only**. Paste is intentionally left to whatever else is installed (e.g. `@liustack/modlens`) so the two never double-handle the same event. If you run modlens' own drop patch *and* this plugin at the same time, both would insert a path — pick one.
## Files
- `package.json` — manifest; declares `dsh.bundle.patch` and the browser bundle (`dsh.client`).
- `cordis.patch.yml` — host mount layer.
- `dsh/index.js` — host half (route).
- `dsh/client.js` — browser half (drag/drop listeners).
## Testing (author)
- `node --check dsh/index.js` — syntax check the host half.
- `node --check dsh/client.js` — syntax check the browser half.
- Install into a web profile, restart the desktop app, drag an image into the composer, and confirm a file path is inserted and the `read` tool can open it.
Install
dsh plugin --profile web add github:yangpeng-space/my-image-drop#7019a261b120b3745f96f1094028b26afbe8bf8b
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 my-image-drop from the hub