TerricSH
dsh-app-launcher
No description
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 15, 2026
- Updated
- Aug 15, 2026
Introduction
@terricsh/dsh-app-launcher
Workspace launcher for the DeepSeek Harness Web GUI.
Adds a split control to the session header's right-aligned utilities row (beside session export):
- 主按钮「打开」:以文件夹形式打开当前工作区(资源管理器)。
- 右侧「▾」下拉:切换用其他工具打开工作区,如 VS Code(
code)、 opencode、Cursor——仅显示本机实际安装的工具;也可在「管理工具…」中 自行添加/删除(名称 + 命令,支持可执行文件名或完整路径)。 - 菜单与按钮显示 Windows 系统图标(文件夹图标取自
shell32.dll; 工具图标从其真实 exe 提取)。
Installation
Add the plugin row to the host patch layer (e.g.
$DSH_HOME/profiles/<profile>/cordis.patch.yml):
- insert:
- id: app-launcher
name: '@terricsh/dsh-app-launcher'
Install the package where the profile can resolve it (the profile's
node_modules, e.g. via a junction to a local checkout), then restart the
dsh web server.
How it works
- Host half (
lib/index.js) registers three HTTP routes:POST /dsh-launcher/launch—{ kind: 'folder', path }opens the folder in Explorer;{ kind: 'tool', command, path }resolves the real.exe(skipping.cmd/.batshims so no extra console window appears) and starts it withStart-Process <exe> "<path>"(falling back to the raw command for terminal tools such as opencode).POST /dsh-launcher/check— probeswhere.exefor a command.POST /dsh-launcher/icon— extracts the folder icon fromshell32.dllor a tool's associated icon and returns it as a PNG data URL (cached).
- Client half (
lib/client.js) renders the split launcher intoconversation.session.header.utilities, derives the current workspace from the session/workspace snapshots, and calls the routes withfetch.
Launching is an explicit desktop action, so the host executes it with the
danger-full-access sandbox policy (the deployment default workspace-write
has no usable Windows ACL runner on this host).
Windows only. Requires the shell and sandboxPolicy services (shipped with
the default web profile).
License
MIT