Files
deepseek-harness/packages/host
Yichen Jiang f2d1a29636 feat(apiproxy): make the default model a user setting the picker writes
The route a new session starts from was frozen into the gateway's
composition entry, so switching models in a conversation reached only that
conversation and every later session went back to the shipped default.

The gateway now owns an `api-gateway` settings section: the entry is the
base layer and the user document layers over it, so `session.selectModel`
records an accepted switch as the default for the next session. The write
is wholesale rather than a merge — switching to a model with no reasoning
effort has to clear a stored one — and a storage failure is reported
without undoing the switch, which already applies to its own session.

`targetFor` now resolves its tiers on every read instead of seeding once:
an explicit selection, else the session's own logged request header, else
the live default. That is what keeps a session that has run a turn deriving
its route from its log forever after, while a session still blank — New
Session reuses one rather than minting another — starts from a default
saved after it was created.
2026-08-07 13:23:19 +08:00
..

host/ — web-GUI host half

English | 中文

The host side of the dsh web GUI: the API gateway every client shape shares, and the plain HTTP server it rides on. The browser side lives in client/; the composed application is apps/cli booting the dsh-base bundle serving apps/web. All product packages.

Package Role ctx key
apiproxy/ Shared host API gateway and wire contract ctx.apiProxy
webserver/ HTTP route carrier ctx.httpServer
frontend-static/ SPA dist server on the webserver fallback seat consumes ctx.httpServer
directory-picker/ Workspace-directory picking seam ctx.directoryPicker
directory-picker-native/ Native directory-picker backend and browser interaction registers ctx.directoryPicker
directory-picker-browse/ In-app directory-browser backend and interaction registers ctx.directoryPicker
directory-picker-auto/ Host-adaptive picker composition mounts a backend

apiproxy remains transport-independent; client/connection supplies the browser/HTTP carrier. Picker implementations replace one another behind the shared seam.