diff --git a/src/apps/chat/components/message/fragments-content/BlockPartModelAux.tsx b/src/apps/chat/components/message/fragments-content/BlockPartModelAux.tsx index 893a38af28..470d5fc393 100644 --- a/src/apps/chat/components/message/fragments-content/BlockPartModelAux.tsx +++ b/src/apps/chat/components/message/fragments-content/BlockPartModelAux.tsx @@ -15,6 +15,8 @@ import { useOverlayComponents } from '~/common/layout/overlays/useOverlayCompone // configuration // const REASONING_COLOR = '#ca74b8'; // '#f22a85' (folder-aligned), '#ca74b8' (emoji-aligned) +const ANTHROPIC_REDACTED_EXPLAINER = // https://docs.anthropic.com/en/docs/build-with-claude/extended-thinking#example-streaming-with-redacted-thinking + 'Some of Claude\'s internal reasoning has been automatically encrypted for safety reasons. This doesn\'t affect the quality of responses.'; const _styles = { @@ -75,6 +77,8 @@ export function BlockPartModelAux(props: { fragmentId: DMessageFragmentId, auxType: 'reasoning' | string, auxText: string, + auxHasSignature: boolean, + auxRedactedDataCount: number, zenMode: boolean, contentScaling: ContentScaling, onFragmentReplace?: (fragmentId: DMessageFragmentId, newFragment: DMessageContentFragment) => void, @@ -141,7 +145,7 @@ export function BlockPartModelAux(props: { Show {typeText} - {expanded && showInline && ( + {expanded && showInline && !!props.auxText && ( - {props.auxText} + + {props.auxText} + {!!props.auxRedactedDataCount && {ANTHROPIC_REDACTED_EXPLAINER}{'.'.repeat(props.auxRedactedDataCount % 5)}} + )} diff --git a/src/apps/chat/components/message/fragments-content/ContentFragments.tsx b/src/apps/chat/components/message/fragments-content/ContentFragments.tsx index b95371caf2..2f6ba624ff 100644 --- a/src/apps/chat/components/message/fragments-content/ContentFragments.tsx +++ b/src/apps/chat/components/message/fragments-content/ContentFragments.tsx @@ -119,6 +119,8 @@ export function ContentFragments(props: { fragmentId={fId} auxType={part.aType} auxText={part.aText} + auxHasSignature={part.textSignature !== undefined} + auxRedactedDataCount={part.redactedData?.length ?? 0} zenMode={props.uiComplexityMode === 'minimal'} contentScaling={props.contentScaling} onFragmentReplace={props.onFragmentReplace}