The Gateway serves the goal domain as Remote endpoints, and a Remote method picks its receiver Service from a generated descriptor — `clear(agent, ref)` takes its agent as a PARAMETER, so the invocation is direct and the receiver resolves on the host. Behind the preset's entry-local realm there was nothing to resolve, and every browser goal call answered `service-unavailable`: the composer's Clear goal button left the bar on screen. That is the `bash-env` criterion read from the other side. Injection is not the only host relationship a Service can have; being READ from a host row is one too. The registry is keyed by session, so one host instance serves every session exactly as it did before presets. The preset keeps the model-facing tool, which is the choice a preset is for. Also reverts the cold-transcript presenter resolve: resuming an agent to reach its presenters made the context meter drop its cache and token counts on every cold-opened session, trading one silent degradation for another. The card degradation it addressed is diagnosed and still open.
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.