description: "Package map for the web GUI browser half: shell boot, browser-host communication, shared client services, localization, development reload, and the UI feature plugins."
English | 中文
The client/ group runs the browser half of the dsh web GUI: it boots the web shell, loads browser-side plugin modules, keeps browser-to-host RPC and event delivery alive, and provides the shared client services and UI feature plugins that render the application. UI features compose through the slot system — each plugin fills declared extension slots with typed props and stores, and the shell renders the assembled tree. All packages here are product packages named @deepseek-ai/dsh-client-<name>; the host half that serves the page lives in host/. Authoring rules live in AGENTS.md, and the module graph, slot model, and object layer are documented in the related notes below.
The kernel packages boot and serve the page; the UI feature packages present it. Each package README owns its contract and configuration.
| Package | Role | ctx key |
|---|---|---|
web/ |
Boots the browser shell | — |
modules/ |
Loads browser-side client modules | ctx.clientModules / ctx.modules |
connection/ |
Maintains browser-host RPC communication and event delivery | ctx.connection |
file-upload/ |
Sends raw Blob and byte-stream request bodies outside the page thread | ctx.fileUpload |
store/ |
Provides React-free observable and snapshot-store primitives | — |
hmr/ |
Refreshes client plugins during development | — |
locale/ |
Provides localization preferences and message dictionaries | ctx.locale |
test-runtime/ |
Shared repository test support for client feature packages | — |
ui-renderer/ |
Binds slot data to React and mounts the assembled application | ctx.uiRenderer |
ui-slots/ |
Defines how UI features register and compose extension slots | — |
ui-session/ |
Adapts Session Controller state into standard Slot sources and hooks | — |
ui-theme/ |
Applies the selected color theme | — |
ui-primitives/ |
Provides shared React controls, icons, and content renderers | — |
ui-attachment/ |
Registers composer and message-image attachment presentation | — |
ui-layout/ |
Arranges the main application regions | — |
ui-sidebar/ |
Presents workspace and session navigation | — |
ui-brand-official/ |
Fills the generic browser-brand slots with the official name and marks | — |
ui-workspace/ |
Provides workspace selection and creation surfaces | — |
ui-conversation/ |
Presents the active conversation and its input surface | — |
ui-chat/ |
Projects and renders the Chat conversation target | — |
ui-approval/ |
Presents approval requests and returns user decisions | — |
ui-tool/ |
Composes Tool call trees and keyed per-Tool views | — |
ui-workflow-run/ |
Replays durable workflow runs as nested chat disclosures | — |
ui-goal/ |
Presents and manages the current goal | — |
ui-trajectory/ |
Presents alternate views of agent activity | — |
ui-commands/ |
Provides session-aware command discovery and dispatch | — |
ui-input-trigger/ |
Coordinates inline command and reference suggestions | — |
ui-skill/ |
Adds skill references to inline suggestions | — |
ui-reference/ |
Unified Web @file / @session reference source |
— |
ui-subagent/ |
Provides subagent navigation, child transcript states, and inline references | — |
ui-schedule/ |
Lists the current Session's active reminders in a read-only header catalog | — |
ui-jobs/ |
Lists this session's background jobs in the conversation header | — |
ui-model-selection/ |
Provides model selection in conversation surfaces | — |
ui-permission-presets/ |
Configures default permissions and switches the current session's access | — |
ui-plan/ |
Presents active plan-mode status and its exit control | — |
ui-settings-plugins/ |
Owns the Plugins settings section, its tab extension point, and configurable host-plane plugin cards | — |
ui-user-questions/ |
Presents interactive questions requested by the agent | — |
ui-agent-preset/ |
Selects a session's agent preset and authors preset compositions | — |
ui-settings/ |
Hosts the settings interface and its extension areas | — |
ui-settings-general/ |
Provides the general settings section | — |
ui-settings-models/ |
Provides model-provider configuration and DeepSeek onboarding | — |
ui-settings-plugin-inventory/ |
Contributes the read-only Host Loader inventory tab to Plugins settings | — |
ui-deliverables/ |
Produces the produced-files turn tail and clickable final-response file references | — |
ui-message-feedback/ |
Contributes per-message feedback controls to the assistant-message action strip | — |
ui-directory-picker-browse/ |
In-app directory browsing surface for the workspace directory flow | — |
ui-directory-picker-native/ |
Native directory-picker surface driving the host's OS chooser | — |
ui-open-in-app/ |
Session-header split button opening the workspace directory in an installed application | — |
Start with the subsystem reference and the two notes that own the cross-package composition decisions, then the host half that serves this page.
dsh.client declarations, the boot graph wire, and the bundle route.