Clicking "fetch available models" on a built-in provider went to the network. That is the wrong source: pi-ai's registry is the authoritative list for its own providers, and it carries the context windows and output caps a `GET /models` listing does not disclose. Asking api.deepseek.com what DeepSeek serves is both slower and worse, and against an endpoint that answers a different shape it failed outright. Interrogation is still keyed by settings namespace — the provider being added has no route — but the request may now name the route it is editing. An adapter that already describes that route answers from what it knows, needs no endpoint at all, and never touches the network; only a route the catalog does not describe reaches the wire, and one naming no endpoint is told to set one or enter its models by hand. `ConfigurableProviderView` gained `supportsDiscovery` so a surface offers the action where a namespace can answer instead of hardcoding an adapter family. Three narrower corrections ride along. Discovery no longer claims Azure or Codex: Azure authenticates with an `api-key` header and an `api-version` query despite its OpenAI lineage, and Codex uses OAuth, so both reported an authentication failure as a provider with no models. Cancellation during the body read escaped as the raw abort reason rather than a coded ABORTED. And the schema comment claiming the probe key is never logged overstated it: the host neither stores nor returns it, but it rides the client's outgoing envelope like every other secret-bearing payload, and redacting that tap is a configuration-plane-wide change.
client/ — web-GUI browser half
English | 中文
The browser side of the dsh web GUI: shell boot, browser-host communication, shared UI services, and feature plugins. Authoring rules live in AGENTS.md; the host half is host/. All except test-runtime are product packages named @deepseek-ai/dsh-client-<name>.
| Package | Purpose |
|---|---|
web/ |
Boots the browser shell from the client entry graph. |
modules/ |
Loads browser-side client modules. |
web-react/ |
Connects the shell runtime to React rendering. |
connection/ |
Maintains browser-host RPC communication and event delivery. |
runtime/ |
Provides shared client services for sessions, workspaces, and UI composition. |
hmr/ |
Refreshes client plugins during development. |
locale/ |
Provides localization preferences and message dictionaries. |
schema-form/ |
Provides schema-backed draft handling for settings editors. |
test-runtime/ |
Provides shared repository test support for client feature packages. |
ui-slots/ |
Defines how UI features register and compose extension slots. |
ui-theme/ |
Applies the selected color theme. |
ui-primitives/ |
Provides shared React controls, icons, and content renderers. |
ui-layout/ |
Arranges the main application regions. |
ui-sidebar/ |
Presents workspace and session navigation. |
ui-workspace/ |
Provides workspace selection and creation surfaces. |
ui-conversation/ |
Presents the active conversation and its input surface. |
ui-goal/ |
Presents and manages the current goal. |
ui-trajectory/ |
Presents alternate views of agent activity. |
ui-command/ |
Provides session-aware command discovery and dispatch. |
ui-slash/ |
Coordinates inline command and reference suggestions. |
ui-skill/ |
Adds skill references to inline suggestions. |
ui-subagent/ |
Provides subagent navigation, child transcript states, and inline references. |
ui-model/ |
Provides model selection in conversation surfaces. |
ui-permission/ |
Configures default permissions and switches the current session's access. |
ui-plan/ |
Presents active plan-mode status and its exit control. |
ui-question/ |
Presents interactive questions requested by the agent. |
ui-settings/ |
Hosts the settings interface and its extension areas. |
ui-settings-general/ |
Provides the general settings section. |
ui-models/ |
Provides model-provider configuration and DeepSeek onboarding. |
Each child reference owns its contract and detailed behavior. The slot system standard and web client architecture note own the cross-package composition and loading decisions.