# DSH Compatibility All slots, services and Client APIs are verified against the DSH version recorded here. Do not rely on memory for the plugin API surface. | Field | Value | |---|---| | Tested DSH version | 0.1.0-rc.7 (`npx @deepseek-ai/dsh@latest --version`) | | Tested DSH commit | npm package `@deepseek-ai/dsh@0.1.0-rc.7` (no source checkout) | | Test date | 2026-08-18 | | npm registry latest (@deepseek-ai/dsh) | 0.1.0-rc.7 (verified 2026-08-19) | | Test profile | `web` (`~/.dsh/profiles/web`) | ## Verified contract references - Plugin package format: `package.json#dsh.bundle.patch` → `cordis.patch.yml` (`- insert: [{id, name}]`); `dsh.client = { platform: "web", inject: [] }`; `exports["./client"]`. - Client bundle: lazy-CJS factory artifact — `window.__ModuleLoader__.load({ id, factory: (require) => ... })`. - Overlay: `ctx.get("slots")` → `slots.inject("shell.overlay", () => slots.register({ name: "shell.overlay", id, order }, Component))`. - Lifecycle: `ctx.effect(fn, label)`. - Composer: `conversation.input.for(binding.ctx)` → `state.getSnapshot()` (`draft`, `draftRev`), `input.setDraft(text)`. - Sessions: `sessions.binding(sessionId)`; DOM anchors `[data-chat-anchor-key]`. - Host plugin: `export const name` + `export function apply(ctx)`. - Host settings: `installSettingsSection(ctx, ns, schema, config, opts)` from `@deepseek-ai/dsh-settings`. - Client settings card: `slots.inject("settings.plugin.item", ...)` + `ctx.settingsScope.bind({ namespace })`. - LLM: `ctx.llm.stream(GenerateOptions): AsyncIterable`. - RPC: client `connection.rpc.call("/api", "ns/method", { args }, signal)`. Custom channel verified against rc.7 types: host `ctx.connection.rpc.handle(channel, (endpoint, payload, signal) => Promise, { authority: 'loopback' | 'trusted-host' })` → returns async disposer; client `ctx.connection.rpc.call(channel, endpoint, payload, signal?)`. `RpcResult = { ok: true, value: T } | { ok: false, error: { code, message, details } }`. This plugin uses channel `/look-here` with `authority: 'loopback'`. - Install: `dsh plugin --profile web add .` (restart web to load); verified: profile `dsh.profile.bundles` gains `look-here`, `--dump-config` shows the `# == look-here` layer, boot graph row `{id: 'look-here', url: '/plugins/look-here/client.js?rev=...'}` served with HTTP 200. - Reference plugin (format only, UI not copied): wangwei-wade/dsh-quote-annotate. ## Version pin procedure (Phase 2) 1. `npx @deepseek-ai/dsh --version` 2. Record version above. 3. If a local checkout exists, record its HEAD commit instead and use it as the test baseline. 4. All slot/service/client contracts are checked against this version.