Files
deepseek-harness/packages/client
Turtle d1e22a7e24 feat(preset): declare Agent compositions in profile YAML (#4569)
* feat(preset): declare Agent compositions in profile YAML

* fix(preset): share scope binding cleanup and refresh module graph

* fix(preset): use host syntax colors in the YAML editor

* fix(preset): write new profile declarations as block YAML

* fix(preset): align eager activation with browser and worker surfaces

* fix(ui-agent-preset): retain the existing preset card layout

* fix(preset): keep rows waiting for a Host service mounted and re-audit after settlement

A preset row whose Host provider was still activating at declaration time
was reported as waiting for a missing service, and the registry recorded the
definition as broken for the rest of the process. Split the mount audit into
failed and pending rows: failures and root-realm leaks still reject the
mount, while pending rows stay mounted and every read and binding re-audits
them after the Host Loader tree settles.

Remove the accidental self-dependency of @deepseek-ai/dsh-web-app and its
lockfile self-link. Archive the copy-only preset authoring note, which the
declarative-preset note fully supersedes, and update the ralph note's
restore recipe to the profile-patch mechanism.

* chore(lint): re-key and prune the unknown-cast baseline after the master merge

* refactor(web-app): ship each Agent preset as its own bundle patch file

`dsh.bundle.patch` accepts an ordered file list, so the four shipped preset
declarations move out of the 1000-line web patch into
`presets/<id>.patch.yml`, one insert per file, applied after the host patch.
The host patch keeps the preset registry row. Gates and test scaffolds that
read the web layer resolve every patch file through `bundlePatchPaths`
instead of one hardcoded path.

* refactor(preset): drop the save notice injected into live Agents

The notice duplicated the save result the Web editor already shows, and
after the producer-owned message sources it would have needed its own
persisted source kind. Saving now only persists and reports the activation
diagnostic; the persistence catalog is unchanged from master.

* docs: regenerate the module graph after dropping the registry's llm dependency

* test(ui-agent-preset): cover the guide dialog's keyboard handling on the declarative section

* fix(preset): address the remaining review comments

Apply the lowercase id rule only when creating a declaration, so presets
declared with other ids stay editable. Export `isBuiltInPreset` from the
display fold and key the client card groups on it. Remove the dead `error`
and `retry` locale keys, the JSDoc orphaned by the `trust` removal, the
`trust` fields in the plugin-inventory test fixtures, and the stale
`dsh-agent-presets` package name in comments and READMEs.

* refactor(preset): make the Web preset page view-and-select only

Remove the child-plugin YAML editor, the `agent_preset` tool and the
registry's read/save Remote methods. Presets are declared and changed only by
bundle patches; the settings page keeps the roster, the new-task default and
the mode help, and its question icon explains that and offers to start a
Creator-mode task. The `editing-cordis-compositions` skill and the Creator
persona describe the bundle-based path, and the authored skill-load Session
and Web snapshots are refreshed for it.

* docs(skill): make the composition skill self-sufficient for preset authoring

State where the shipped declarations live, list every declaration field,
inline a complete minimal bundle and an override example, and name the
verification calls, so Creator mode no longer reads DSH package sources to
infer the format. Refresh the authored skill-load Session for the new text.

* test(tools): drop the removed agent_preset tool from the catalog expectation
2026-09-21 08:24:18 +00:00
..
…
…
…

description, kind
description kind
Package map for the web GUI browser half: shell boot, browser-host communication, shared client services, localization, development reload, and the UI feature plugins. package-group

client/ — web-GUI browser half

English | 中文

Summary

The client/ group provides the browser experience for the dsh web GUI, including conversation, navigation, settings, approvals, file access, and other interactive features. Choose packages from this family when adding browser-visible behavior; use host/ for server-side page delivery and host integration. Packages cover both the shared browser foundation and focused UI features, while each child README owns its configuration and behavior. Authoring rules live in AGENTS.md, and the related documentation below explains cross-package composition.

Table of Contents


Packages

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 typed extension Slots and reusable Component Factories —
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-dockkit/ Provides docking layout operations and React components —
ui-sidebar/ Presents workspace and session navigation —
ui-sidebar-right/ Owns the right Sidebar and its tab types ctx.sidebarRight, ctx.sidebarRightTabs
ui-sidebar-documentpreview/ Displays documents in right Sidebar tabs ctx.documentPreviews
ui-sidebar-browser/ Browses sandboxed HTTP(S) pages, including loopback services, in right-Sidebar tabs —
resources/ Unified resource model: protocol providers behind the useResource session standard hook ctx.resources
ui-sidebar-files/ Right-Sidebar workspace file tree tab type —
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-jobs/ Lists this session's background jobs with on-demand streaming record panels —
ui-schedule/ Lists the current Session's active reminders in a read-only header catalog —
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-plugin-manager/ Contributes the sidebar Plugins panel: install, enable, disable, retry, and compose installed packages —
ui-settings-plugin-inventory/ Contributes the read-only Host Loader inventory tab to Plugins settings —
ui-deliverables/ Produces the changed-files card with its comparison tabs, delivery cards, and clickable final-response file references —
ui-message-feedback/ Provides message ratings and feedback dialogs opened from ratings, /feedback, or the Session Header menu ctx.feedbackUi
ui-directory-picker-browse/ In-app directory browsing surface for the workspace directory flow —
ui-directory-picker-native/ Native directory-picker surface driving the local Desktop or Host OS chooser —
ui-open-in-app/ Session-header split button opening the workspace directory in an installed application, and the document preview's default-application controls for one file —

Start with the subsystem reference and the two notes that own the cross-package composition decisions, then the host half that serves this page.

Dev Note

Working context for maintainers — click to expand

None.