Bundle
dsh-question-composer
Enhanced ask_user_question composer for DeepSeek Harness: batch tabs, number-key answers, and a confirm summary on top of the stock question flow
- Source
- 1479650473
- License
- Apache-2.0
- Updated
- Updated 3 days ago
Readme
# dsh-question-composer An enhanced `ask_user_question` composer for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness): batch question tabs, number-key answers, a confirm summary, and a dedicated plan-review decision card — layered on the stock question flow. When this plugin is mounted, it **replaces** the stock `@deepseek-ai/dsh-client-ui-user-questions` composer: the composer chain renders the first entry whose selector matches, so every pending `question` interaction hands the question seat to the enhanced flow. A request that declares the `plan-review` presentation intent renders its own decision surface; every other request takes the generic flow. ## Features - **Batch tabs** — multiple pending questions render as a tab strip; answers on each tab are collected before a single batch submit. - **Number-key answers** — `1`–`9` pick the Nth option of the visible question, `Enter` confirms. - **Confirm summary** — the final submit shows a summary of all answers (single-choice, custom, multi-select) before sending. - **Plan-review routing** — a question whose intent declares `plan-review` renders a decision card (approve / reject with reason) instead of the question flow. - **Bilingual** — `zh` / `en` dictionaries on its own `question-composer` locale namespace. ## Requirements - DeepSeek Harness `>= 0.1.0-rc.6` (installed through the harness's package manager or a profile that resolves `@deepseek-ai/*` packages). ## Installation ```sh dsh plugin add dsh-question-composer ``` The `dsh.bundle` manifest (`cordis.patch.yml`) mounts the server-side plugin entry and the `dsh.client` declaration injects the browser half immediately (`platform: web`), so a profile restart is enough to enable it. > If you want to keep the stock composer as a fallback, keep `@deepseek-ai/dsh-client-ui-user-questions` mounted too — the chain order decides which composer renders first. ## Screenshots (TBD — added after the first tagged release.) ## Development ```sh npm install # or pnpm install npm run typecheck # tsc --noEmit npm run test # vitest (jsdom-free, node environment + __ModuleLoader__ harness) npm run build # tsc declarations + esbuild browser bundle → lib/ ``` ### Architecture - `src/client/index.ts` — client plugin body: registers the `question-composer` dictionaries and injects the composer into the `conversation.composer` slot chain (selector-routed on the `question` interaction carrier). - `src/client/QuestionComposer.tsx` — the enhanced flow (tabs, number keys, confirm summary). - `src/client/PlanReviewPanel.tsx` — the plan-review decision surface. - `src/client/locales.ts` — `zh` / `en` dictionaries. - `scripts/build.mjs` — esbuild bundle with the harness's `window.__ModuleLoader__.load` wrapper and CSS Modules compiled to an injected `<style>` tag. - `tests/` — keyless unit tests; official client artifacts load through native-require wrappers (`tests/aliases/`) because their `__ModuleLoader__` CJS bundles shadow Node's `module` variable. ## License Apache-2.0 — see [LICENSE](LICENSE).
Install
dsh plugin --profile web add github:1479650473/dsh-question-composer#589a537c362659ea2ea7aa132558913edd8c9d8d
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-question-composer from the hub
- 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.