fix(ui-agent-preset): read a refusal's cause by its detail, not its code

This commit is contained in:
Yichen Jiang
2026-08-26 13:41:20 +08:00
parent cd3401a39a
commit 002af9f20b
@@ -162,11 +162,14 @@ export class AgentPresetSeatController {
const { error } = result
this.set({
busy: false,
// A mount failure carries its cause twice: `message` wraps it in the
// A refusal carries its cause twice: `message` wraps it in the
// roster's own frame, which names the preset the surface reporting
// this already names, and `details.reason` holds the same cause
// without it.
error: error.code === 'agent-preset-invalid' ? error.details.reason : error.message,
// this already names, and a `reason` detail holds the same cause
// without it. Read by the detail rather than by the code, because
// every refusal that has a cause to give names it the same way.
error: 'reason' in error.details && typeof error.details.reason === 'string'
? error.details.reason
: error.message,
current: presetOf(session) ?? '',
})
return