deepseek-harness/packages/client/connection/tests
Yichen Jiang bb43ff4f37 feat(ui): make a session that cannot send refuse to accept one
A default naming a route the Models page has since removed left the
composer saying 选择模型 while the input still accepted a message, which
then failed inside the adapter mid-turn.

`session.prompt` now refuses with `model-unavailable` before opening a
turn. That is the enforcement boundary: the method stays callable no
matter what a client disables. `session.models` reports the same fact as
`routable`, and ui-model pushes a block through the new
`ctx.conversation.blocks` registry so the bar renders the disabled
textarea it already renders without a workspace, carrying the blocker's
own reason. The push direction is forced — ui-model already depends on
ui-conversation, so ui-conversation cannot read it back.

The gate is `routable`, not "matches no advertised group": catalog
membership is advisory, so a route serving a model it stopped advertising
is missing from the groups yet perfectly usable, and `null` before the
first load never blocks so a slow Host cannot lock a working composer.

The scaffold gains a route-only adapter for fixture-less keyless
scenarios. Registering zero providers is a test artifact — every product
composition mounts one — and the goldens that froze the seat's fallback
label now show the model those scenarios actually route to.
2026-08-07 15:26:42 +08:00
..
api-helpers.spec.ts feat(gui): step1 skeleton — dsc web serves built web UI over booted harness host 2026-07-22 16:24:44 +08:00
api-request-trust.spec.ts fix(connection): hold markerless requests to the Host fence — plain-HTTP browser reads carry no markers 2026-07-28 17:02:39 +08:00
client-apply.spec.ts style(connection): satisfy callback lint 2026-08-04 16:58:40 +08:00
connection.spec.ts refactor(token-meter): make context occupancy durable projection state 2026-07-30 13:53:08 +08:00
fake-api.ts feat(ui): make a session that cannot send refuse to accept one 2026-08-07 15:26:42 +08:00
fixture-commands.spec.ts Merge origin/master (plan line #590) into web-permission-sandbox-merge-master 2026-07-29 03:52:55 +08:00
fixture.spec.ts docs(todo): state the catalog's policy branch and drop the sidecar census 2026-08-06 12:17:10 +08:00
http-bridge.spec.ts feat(gui): add native workspace folder picker 2026-07-27 03:50:22 -07:00
loopback-hostname.spec.ts fix(web): share loopback hostname policy 2026-08-02 13:24:49 -07:00
node-half.spec.ts fix(host): pin model discovery to loopback and drop its unread wire field 2026-08-05 19:51:11 +08:00
websocket-downlink.spec.ts test(connection): use valid mux frames 2026-08-04 16:49:06 +08:00