dsh-preset-kit
Publish agent presets into a DeepSeek Harness home: symlink installs with hot reload, owner tracking, and clean uninstall.
安装
此插件尚未提供可验证的 bundle,或兼容性检查未通过。请先阅读仓库说明。 阅读完整 README ↗
说明文档
阅读完整 README ↗dsh-preset-kit
Publish agent presets into a DeepSeek Harness home: symlink installs with hot reload, owner tracking, and clean uninstall.
Why
dsh treats presets as local files: a preset is a directory under
$DSH_HOME/.agent-presets// holding agent.cordis.yml (+ optional
preset.yml). Bundles cannot add preset roots — composeProfile replaces
the agent-presets row's roots with the shipped root at the top overlay —
so a plugin that ships a preset has to write into the user root itself.
This kit is that shared piece: publish, conflict rules, ownership records, and uninstall, so every preset-carrying plugin does not reinvent it.
Hot reload
dsh-agent-presets re-reads its roots on every list()/resolve(), so a
preset that appears in the user root is visible immediately — no restart.
With the default symlink mode the installed preset always reflects the
installed package's files, so dsh plugin add updates the
preset in place.
API
import { publishPresetSync } from 'dsh-preset-kit'
// In a Cordis plugin apply():
const undo = publishPresetSync({
id: 'minimal-web', // /^[a-z0-9][a-z0-9-]*$/
dir: new URL('./presets/minimal-web/', import.meta.url).pathname,
owner: 'dsh-minimal-web', // your package name
})
ctx.effect(() => undo(), 'preset-publish')
Async variants for scripts: publishPreset, unpublishPreset,
listPublished. dshHome defaults to $DSH_HOME, then ~/.dsh.
Ownership rules
- Publishing into an id already published by the same owner replaces it.
- Publishing into an id published by a different owner throws.
- Publishing into a preset directory the user authored by hand (no publisher record) throws — never overwrite a person's work.
unpublishPresetremoves only its own publication; the undo function is safe to run after a manualrm.
Records live in $DSH_HOME/.agent-presets/.publishers/.json.