dsh-authorize-app
Manifest validDeepSeek Harness plugin: a 'Connected Apps' settings section — a central platform where other DSH plugins surface themselves.
dsh-authorize-app
A DeepSeek Harness (DSH) plugin that adds a "Connected Apps / 连接应用" settings section — a central platform where other DSH plugins can surface themselves. 一个 DSH 插件:在设置面板里新增「连接应用」区块,作为其他 DSH 插件自我展示的中央平台。
Out of the box it renders an empty list. Other apps opt in by registering a card into its slot — no registry, no network transport, no cross-plugin imports.
What it does
- Adds a 5th entry to the Settings panel — Connected Apps (
order: 25, after General / Models / Plugins / Agent Presets). - Declares a child slot
settings.connected-apps.item(kind: list) that any DSH plugin can register into. - Renders that slot as the app list, with a bilingual empty state (
No connectable apps yet/暂无可连接的应用). - Also registers a placeholder host-side tool
dsh_authorize_app.
Install
# from the npm registry
dsh plugin --profile web add dsh-authorize-app
# from a local checkout (run from the PARENT directory)
dsh plugin --profile web add ./dsh-authorize-app
Then restart the profile (dsh web) and refresh the page. Settings → 连接应用 / Connected Apps appears.
For app developers
Want your app to show up in "Connected Apps"? In your plugin's client half, register a card into the child slot:
ctx.slots.inject('settings.connected-apps.item', () =>
ctx.slots.register({
name: 'settings.connected-apps.item',
id: 'your-app-id', // unique id across all apps
order: 0, // sort order (ascending)
inject: () => ({
// anything your card needs: name, description, connection status, …
}),
}, YourAppCard), // a React component; rendered inside the list
)
That is the entire contract:
- No host-side registry. The slot ledger is the join point.
- No transport. Your component is mounted by the platform's
renderSlot, so you just render a card. - Install order is irrelevant.
ctx.slots.inject(...)waits for the slot declaration.
YourAppCard receives the standard DSH slot props: your inject() return value, plus the locale t seat if you declare a locale: namespace. Return null to hide, or render your card row.
Minimal card example
function YourAppCard(props) {
return React.createElement('div', { style: { padding: '12px 0' } },
'My App', ' — ', props.t ? props.t('status') : 'connected')
}
Architecture
| Half | Source → dist | Role |
|---|---|---|
| Host (Node) | src/index.ts → dist/index.js | registers the dsh_authorize_app tool |
| Client (browser) | client.js → dist/client.js | registers the settings.section + child slot |
package.json declares dsh.client (platform: web) and the ./client export. The host's client-modules scan serves dist/client.js at /plugins/dsh-authorize-app/client.js and injects it into window.__DSH_BOOT__.
Build
pnpm install
pnpm run build # tsc → dist/index.js; copies client.js → dist/client.js
pnpm run typecheck
Layout
src/index.ts host plugin (tool registration)
client.js hand-authored client module bundle (window.__ModuleLoader__.load)
scripts/build-client.mjs copies client.js → dist/client.js
cordis.patch.yml bundle patch layer (inserts this plugin into a profile)
Pitfalls (for maintainers)
- npm dist-tag trap —
@deepseek-ai/dsh-toolslatestis a stale0.0.1-rc.1; the real line is under thenexttag (0.1.0-rc.x). This package pins thenextversion exactly; do not re-install it over the pin. - Client-half discovery — the host scan does
require.resolve('<pkg>/package.json'), soexportsMUST include"./package.json": "./package.json"and"./client". Missing either makes the client half silently skipped (host loads,/plugins/<pkg>/client.js404s). - Node version — DSH requires
^22.19.0 || >=24.0.0. @deepseek-ai/cordisis a peerDependency — import onlytype { Context }(erased at compile); the host hands youctxat runtime.
License
MIT
Comments
Loading…
Similar plugins
by cheng-wj
DSH plugin: restart / update / inspect the DeepSeek Harness desktop app from the model side (Windows)
★ 0
MIT
JavaScript
Oct 21, 2026
dsh plugin --profile web add dsh-app-controlby 0lidaxiang
DeepSeek Harness is a plugin-based system for building AI agents. Everything, from tools and models to the web UI, can be added or replaced as a plugin.
★ 4
↓ 62/wk
MIT
JavaScript
Oct 7, 2026
dsh plugin --profile web add dsh-plugin-greetby builtin-pb
The single plugin you need for DSH — build, test, diagnose, and maintain DeepSeek Harness plugins and core.
★ 7
MIT
JavaScript
Sep 19, 2026
dsh plugin --profile web add dsh-developerby yogeek
Enable/disable DeepSeek Harness (dsh) plugins from Settings > Plugins, grouped into collapsible categories
★ 0
MIT
JavaScript
Aug 25, 2026
dsh plugin --profile web add dsh-plugin-toggleby jwilson411
DeepSeek Harness plugin: fail-closed URL host/scheme allowlist that runs before a request is opened
★ 0
MIT
JavaScript
Sep 21, 2026
dsh plugin --profile web add dsh-ssrf-guardby linguiyii
DeepSeek Harness 客户端插件:把设置入口放到侧边栏底部,一键打开设置页。 / A DSH client plugin that puts a settings button at the bottom of the sidebar.
★ 1
MIT
JavaScript
Oct 18, 2026
dsh plugin --profile web add dsh-sidebar-settings