attribute sidechain prose/thinking to the agent, not claude (T-265); close T-267
A sub-agent's prose rendered as "claude" and its thinking as "thinking", identical to the main assistant, because the label logic ignored isSidechain — presenting sub-agent output as if the main Claude said it. Now a sidechain AssistantTextMessage is labelled "agent" with a muted stripe (never the coral claudeAccent brand), and sidechain thinking is "agent thinking". Main-thread items are unchanged. Tests: sidechain prose/thinking relabel, main-thread unchanged; golden contrasting the muted agent stripe with the coral claude stripe. This completes epic T-267 (conversation rendering streamlining): fold success result (T-262), fold agent prompt (T-263), nest the agent run (T-264), the shared holder primitive (T-266), and this attribution fix. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -354,16 +354,19 @@ class _ConversationTurn extends StatelessWidget {
|
||||
copyText: i.text,
|
||||
body: ClideMarkdown(i.text),
|
||||
),
|
||||
// Sub-agent (sidechain) prose is NOT the main Claude — attribute it to the
|
||||
// agent with a muted accent, never the coral "claude" brand (T-265). The
|
||||
// coral claudeAccent is reserved for the real main-thread Claude.
|
||||
AssistantTextMessage() => ConversationCard(
|
||||
accent: claudeAccent,
|
||||
label: 'claude',
|
||||
accent: i.isSidechain ? tokens.globalTextMuted : claudeAccent,
|
||||
label: i.isSidechain ? 'agent' : 'claude',
|
||||
copyText: i.text,
|
||||
body: ClideMarkdown(i.text),
|
||||
),
|
||||
AssistantThinkingMessage() => ConversationCard(
|
||||
variant: ConversationCardVariant.bare,
|
||||
accent: tokens.globalTextMuted,
|
||||
label: 'thinking',
|
||||
label: i.isSidechain ? 'agent thinking' : 'thinking',
|
||||
copyText: i.thinking,
|
||||
collapsible: true,
|
||||
collapsedByDefault: true,
|
||||
|
||||
Reference in New Issue
Block a user