Skip to content
dsh.fish
Bundle

@mattismegevand/dsh-open

A Codex-style workspace Open menu for DeepSeek Harness Web

Source
mattismegevand
License
MIT
Updated
Updated 20 days ago

Readme

# dsh-open

English | [中文](README.zh.md)

> A standalone DeepSeek Harness Web plugin that adds a compact split Open action to each conversation header, listing dock panels, the platform file manager, and your editors.

[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![dsh-plugin](https://img.shields.io/badge/DeepSeek%20Harness-dsh--plugin-4b6fff)](https://github.com/topics/dsh-plugin)

![Open menu in a Harness session header](https://raw.githubusercontent.com/mattismegevand/dsh-open/main/assets/open-menu.png)

## What it does

- The main icon opens the last selected available target.
- The chevron lists registered dock panels, the platform file manager, and editors selected by `$VISUAL` and `$EDITOR`.
- With one available target, the control collapses to one button.
- Internal tools use `ctx.dock.open(panelId)` and appear only while their panel is registered.
- Native actions are resolved on the Host. The browser sends only a session id and a closed action id; it cannot choose a filesystem path or executable.
- Same-origin checks, bounded request bodies, environment scrubbing, and a launch timeout protect native invocation.

## Install

Requires [`dsh-dock`](https://github.com/mattismegevand/dsh-dock), the [`dsh`](https://www.npmjs.com/package/@deepseek-ai/dsh) CLI (Node.js 22.19+ or 24), and pnpm 10+.

### From npm

```sh
dsh plugin --profile web add @mattismegevand/dsh-open
```

### From GitHub

```sh
dsh plugin --profile web add github:mattismegevand/dsh-open
```

Git installs fetch sources, so pnpm runs the package's `prepare` build on first add. pnpm ≥10 refuses that until you allow it: copy the exact package key pnpm printed into the profile's `pnpm-workspace.yaml` `allowBuilds` entry, then re-run the same `add`.

### Develop locally

```sh
git clone https://github.com/mattismegevand/dsh-open.git
cd dsh-open
corepack pnpm install
corepack pnpm check:all
dsh plugin --profile web add .
```

The shipped patch inserts the Host row automatically.

## Configuration

```yaml
- id: open
  name: '@mattismegevand/dsh-open'
  config:
    preferredAction: visual
    terminalPanelId: terminal
    maxRequestBytes: 8192
    launchTimeoutMs: 10000
```

The configured action is the initial preference for a fresh browser profile. Menu selection updates a browser-local preference. `$VISUAL` and `$EDITOR` are resolved on `PATH` and deduplicated. The file-manager action uses Finder on macOS, File Explorer on Windows, and the system opener on Linux.

## Related plugins

- [dsh-dock](https://github.com/mattismegevand/dsh-dock) — the docking system that registers the internal panel targets.
- [dsh-terminal](https://github.com/mattismegevand/dsh-terminal) — VS Code-style Ghostty terminal panel.
- [dsh-git](https://github.com/mattismegevand/dsh-git) — session-scoped working-tree Review panel.

## Model experience

### Workspace Open UI

#### What the model sees

Nothing. The plugin launches UI panels or native applications from a human-operated browser control and registers no prompt, tool schema, or model-visible message.

#### Token effect

Zero tokens are added to model requests or responses.

#### KV Cache effect

None. Selecting or launching an Open target does not alter the model input prefix.

## Known limitations

- Native capability discovery runs when the client store loads and is not refreshed while that store remains mounted.
- Native launch failures are surfaced as concise errors; platform-specific recovery actions such as revealing Finder permission settings are not implemented.
- Internal targets depend on live dock registrations, and native targets remain local-host only.

## License

MIT

Install

dsh plugin --profile web add github:mattismegevand/dsh-open#2d529d86eff31480f0132fa519b57cfa786e0596

Profile: web

  • 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.
Source