Files
deepseek-harness/apps/web/tests/snapshots/markdown-cjk-strong/ui.expected.md
T
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

50 lines
1.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
- banner:
- navigation "Session hierarchy":
- button "CJK strong emphasis" [disabled]
- tablist:
- tab "Chat" [selected]
- tab "Trajectory"
- text: Render adjacent CJK strong emphasis. {{clock}}
- button "Copy":
- img
- heading "CJK strong emphasis" [level=2]
- paragraph:
- strong: 注意:
- text: 内容
- paragraph:
- strong: "Notice:"
- text: 内容
- paragraph:
- strong: 事件中间件(waterfall
- text: 实现
- paragraph:
- strong: 事件中间件(waterfall)
- text: 实现
- paragraph:
- strong: 句号。
- text: 后续
- paragraph:
- strong: Period.
- text: 后续
- paragraph:
- strong: 提醒!
- text: 继续
- paragraph:
- strong: Warning!
- text: 继续
- paragraph: CJK_STRONG_DONE
- button "Copy":
- img
- button "Branch into a new conversation":
- img
- text: {{clock}} Ran for {{duration}}
- textbox "Message the agent"
- button "Commands":
- img
- 'button "Access mode, current: Workspace Write"': Workspace Write
- button "Select model, current DeepSeek-V4-Flash":
- text: DeepSeek-V4-Flash
- img
- button "Send message" [disabled]
- text: 1 turns · 1 steps LLM {{duration}} Input 0 tok · Output 0 tok